diff --git a/Readme.md b/Readme.md index 2a7c9fb..69217f2 100644 --- a/Readme.md +++ b/Readme.md @@ -14,26 +14,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,33 +43,33 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
- + + ## Visual Studio Code Extension 🔮 + VScode extension aims to make your workflow more efficient. -It addresses the problems of standard search by providing multiline support and offers an easy way to add gaps or use wildcards in the query. +It addresses the problems of standard search by providing multiline support and offers an easy way to add gaps or use wildcards in the query. -You don't need to have any Regex knowledge to query complex code patterns. +You don't need to have any Regex knowledge to query complex code patterns. With CodeQue, you can easily navigate and modify your codebase, making your development process faster and more efficient. -It will help you with code refactoring, speed up project discovery, and make it easy to find duplicated or similar code patterns. +It will help you with code refactoring, speed up project discovery, and make it easy to find duplicated or similar code patterns. Advanced code search options and todo-like list of accurate search results will streamline your workflow. @@ -102,14 +102,13 @@ CodeQue ESLint integration is a no-brainier for any team willing to improve thei -__Installation 👇__ +**Installation 👇** ```sh yarn add --dev @codeque/eslint-plugin ``` - -__Usage ✨__ +**Usage ✨** Enhance your `.eslintrc` with following setup: @@ -117,25 +116,31 @@ Enhance your `.eslintrc` with following setup: { "plugins": ["@codeque"], "rules": { - "@codeque/error": ["error", [ - { - "query": "fetchData()", - "mode": "exact", - "message": "Using fetchData() without parameters causes app crash!", - }, - ]], - "@codeque/warning": ["warn", [ - { - "query": "import $$$ from 'lodash';", - "mode": "include", - "message": "Prefer to import lodash functions from separate packages like 'lodash.debounce'", - }, - ]] + "@codeque/error": [ + "error", + [ + { + "query": "fetchData()", + "mode": "exact", + "message": "Using fetchData() without parameters causes app crash!" + } + ] + ], + "@codeque/warning": [ + "warn", + [ + { + "query": "import $$$ from 'lodash';", + "mode": "include", + "message": "Prefer to import lodash functions from separate packages like 'lodash.debounce'" + } + ] + ] } } ``` -Find more information in [`@codeque/eslint-plugin` package readme](https://www.npmjs.com/package/@codeque/eslint-plugin) +Find more information in [`@codeque/eslint-plugin` package readme](https://www.npmjs.com/package/@codeque/eslint-plugin)
@@ -149,19 +154,20 @@ Find more information in [`@codeque/eslint-plugin` package readme](https://www.n ## CLI tool 🔥 CodeQue CLI is a complementary tool that can be used for + - Searching code patterns right from terminal including headless environments - Building scripts to assert that some code patterns exist or not exist - Enhancing git hooks to avoid committing or pushing unwanted code -__Installation 👇__ +**Installation 👇** ```sh yarn global add @codeque/cli ``` -__Usage ✨__ +**Usage ✨** ```sh codeque @@ -181,6 +187,7 @@ Find more information in [`@codeque/cli` package readme](https://www.npmjs.com/p Feel free to use [Github Issues](https://github.com/codeque-co/codeque/issues) to + - ask for help with writing a query - report a bug or doubt -- suggest feature or improvement \ No newline at end of file +- suggest feature or improvement diff --git a/package.json b/package.json index ea36d0b..b763d8e 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "eslint-plugin-jest": "^24.1.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.0.0", - "typescript": "^4.5.2" + "typescript": "5.9.3" }, "scripts": { "lint": "yarn workspaces run lint", @@ -36,4 +36,4 @@ "dependencies": { "@codeque/eslint-plugin": "^0.1.1" } -} +} \ No newline at end of file diff --git a/packages/cli/README.md b/packages/cli/README.md index e923095..8227db1 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1,3 +1,5 @@ + +

@@ -14,26 +16,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,26 +45,26 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
- + + ## CLI tool 🔥 CodeQue CLI is a complementary tool that can be used for + - Searching code patterns right from terminal including headless environments - Building scripts to assert that some code patterns exist or not exist - Enhancing git hooks to avoid committing or pushing unwanted code @@ -119,7 +121,7 @@ I love using CodeQue to look for specific function or React hook usage. It's fas This a typical query that you can use to find usage of some React hook. ```ts -const $$$ = useMyHook(); +const $$$ = useMyHook() ``` ### Assertions ☔ @@ -194,6 +196,7 @@ codeque [options] Feel free to use [Github Issues](https://github.com/codeque-co/codeque/issues) to + - ask for help with writing a query - report a bug or doubt -- suggest feature or improvement \ No newline at end of file +- suggest feature or improvement diff --git a/packages/cli/package.json b/packages/cli/package.json index 2146dc0..79bbade 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@codeque/cli", - "version": "0.5.0", + "version": "0.5.1", "description": "Multiline code search for every language. Structural code search for JavaScript, TypeScript, HTML and CSS", "bin": { "codeque": "./bin.js" @@ -31,7 +31,7 @@ }, "dependencies": { "@babel/code-frame": "^7.18.6", - "@codeque/core": "^0.5.0", + "@codeque/core": "^0.6.1", "colorette": "^2.0.16", "commander": "^8.3.0", "ora": "^5.0", diff --git a/packages/core/README.md b/packages/core/README.md index 66a0f17..df42b08 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -1,3 +1,5 @@ + +

@@ -14,26 +16,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,18 +45,16 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
@@ -73,6 +73,7 @@ To use CodeQue check available platforms listed above. Feel free to use [Github Issues](https://github.com/codeque-co/codeque/issues) to + - ask for help with writing a query - report a bug or doubt -- suggest feature or improvement \ No newline at end of file +- suggest feature or improvement diff --git a/packages/core/__tests__/CSharp/matchCodePatterns/basic.test.ts b/packages/core/__tests__/CSharp/matchCodePatterns/basic.test.ts new file mode 100644 index 0000000..c7c25dd --- /dev/null +++ b/packages/core/__tests__/CSharp/matchCodePatterns/basic.test.ts @@ -0,0 +1,179 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings } from '../../utils' + +describe('Basic queries', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should exact match identifier', async () => { + const fileContent = ` + using System; + + Console.WriteLine("Hello"); + ` + const queries = [fileContent] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should exact match function definition', () => { + const fileContent = ` + using System; + + class TestClass + { + public static void Main(){} + + static void Fib(int n) + { + var init = (0, 1); + var (a, b) = init; + while (a < n) + { + Console.Write($"{a} "); + (a, b) = (b, a + b); + } + Console.WriteLine(); + } + } + ` + const queries = [fileContent] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should partial match function definition', () => { + const fileContent = ` + using System; + + class TestClass + { + public static void Main(){} + + static void Fib(int n) + { + var init = (0, 1); + var (a, b) = init; + while (a < n) + { + Console.Write($"{a} "); + (a, b) = (b, a + b); + } + Console.WriteLine(); + } + } + ` + + const queries = [ + ` + class TestClass + { + void Fib(int n) + { + Console.WriteLine(); + } + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match multiline', () => { + const fileContent = ` + using System; + + class TestClass + { + public static void Main(){} + + static void Fib(int n) + { + var init = (0, 1); + var (a, b) = init; + while (a < n) + { + Console.Write($"{a} "); + (a, b) = (b, a + b); + } + Console.WriteLine(); + } + } + ` + + const queries = [ + ` + class TestClass + { + void Fib(int n) + { + var init = (0, 1); + var (a, b) = init; + } + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + const match = matches[0] + + expect(match.loc).toStrictEqual({ + start: { line: 4, column: 8, index: 32 }, + end: { line: 19, column: 9, index: 429 }, + }) + }) +}) diff --git a/packages/core/__tests__/CSharp/matchCodePatterns/literals.test.ts b/packages/core/__tests__/CSharp/matchCodePatterns/literals.test.ts new file mode 100644 index 0000000..baea649 --- /dev/null +++ b/packages/core/__tests__/CSharp/matchCodePatterns/literals.test.ts @@ -0,0 +1,165 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings } from '../../utils' + +describe('Literals', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match string literal', () => { + const fileContent = ` + using System; + + Console.WriteLine("Csharp"); + ` + + const queries = [ + ` + "Csharp" + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should exact match template string literal', () => { + const fileContent = ` + using System; + + Console.WriteLine($"Machine {machineId} has {status}."); + ` + + const queries = [ + ` + $"Machine {machineId} has {status}." + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Integer literal', () => { + const fileContent = ` + class TestClass + { + static void TestPrint() + { + var simpleInt = 32; + } + } + ` + + const queries = [ + ` + 32 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Float literal', () => { + const fileContent = ` + class TestClass + { + static void TestPrint() + { + var simpleFloat = 32.0; + } + } + ` + + const queries = [ + ` + 32.0 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Hex literal', () => { + const fileContent = ` + class TestClass + { + static void TestPrint() + { + var simpleHex = 0x1A2F; + } + } + ` + + const queries = [ + ` + 0x1A2F + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/CSharp/matchCodePatterns/wildcards.test.ts b/packages/core/__tests__/CSharp/matchCodePatterns/wildcards.test.ts new file mode 100644 index 0000000..623d786 --- /dev/null +++ b/packages/core/__tests__/CSharp/matchCodePatterns/wildcards.test.ts @@ -0,0 +1,156 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings } from '../../utils' + +describe('Wildcards', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match string wildcard', () => { + const fileContent = ` + using System; + + var langLabel = "Csharp"; + Console.WriteLine("Csharp"); + ` + + const queries = [ + ` + "Cs$$" + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(2) + }) + + it('Should match node wildcard', () => { + const fileContent = ` + using System; + + var langLabel = "Csharp"; + Console.WriteLine("Csharp"); + ` + + const queries = [ + ` + var langLabel = $$$; + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match identifier wildcard', () => { + const fileContent = ` + using System; + + var langLabel = "Csharp"; + Console.WriteLine("Csharp"); + ` + + const queries = [ + ` + Console.$$(); + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match integer wildcard', () => { + const fileContent = ` + using System; + + var duration = 3600; + ` + + const queries = [ + ` + 0x0 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match float wildcard', () => { + const fileContent = ` + using System; + + var ratio = 2.33; + ` + + const queries = [ + ` + 0x0 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/JavaScript/other/includeWithOrder.test.ts b/packages/core/__tests__/JavaScript/other/includeWithOrder.test.ts new file mode 100644 index 0000000..054cb88 --- /dev/null +++ b/packages/core/__tests__/JavaScript/other/includeWithOrder.test.ts @@ -0,0 +1,84 @@ +import { searchInStrings } from '../../../src/searchInStrings' + +describe('include-with-order wildcards', () => { + it('Should properly match several function arguments using node tree wildcards', () => { + const fileContent = ` + useQuery(API.path, { param : 'value' }, { suspense: true }) + ` + + const queries = [ + ` + useQuery($$$, $$$, { suspense: true }) + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include-with-order', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should properly match several function parameters ', () => { + const fileContent = ` + function func(arg1, arg2 = "test") {} + ` + + const queries = [ + ` + function func($$, arg2 = "test") {} + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include-with-order', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should properly match several function parameters 2', () => { + const fileContent = ` + function func(arg1, arg2 = "test") {} + ` + + const queries = [ + ` + function func(arg1, $$$) {} + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include-with-order', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/JavaScript/other/searchWithContext.test.ts b/packages/core/__tests__/JavaScript/other/searchWithContext.test.ts index 8f3d484..280f0ea 100644 --- a/packages/core/__tests__/JavaScript/other/searchWithContext.test.ts +++ b/packages/core/__tests__/JavaScript/other/searchWithContext.test.ts @@ -1048,4 +1048,119 @@ describe('Search with context', () => { ).toBe(`'content'`) }) } + + it('should not bind wildcard alias to first encounter partially matching pattern, if rest of the node is not matched', () => { + const fileContent = ` + (() => { + function func1() { + 1 + } + function func2() { + 2 + } + })() + ` + + const queries = [ + ` + (() => { + function $$_ref1() { + 2 + } + })(); + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + expect(matches[0].aliases.identifierAliasesMap['ref1'].aliasValue).toBe( + 'func2', + ) + }) + + it('should not bind wildcard alias to first encounter partially matching pattern, if rest of the node is not matched 2', () => { + const fileContent = ` + { + function func1() { + 1 + } + function func2() { + 2 + } + } + ` + + const queries = [ + ` + { + function $$_ref1() { + 2 + } + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + expect(matches[0].aliases.identifierAliasesMap['ref1'].aliasValue).toBe( + 'func2', + ) + }) + + it('Should match identifier in two subsequent nested code paths', () => { + const fileContent = ` + useQuery({ key: value }, { key: value2}) + ` + + const queries = [ + ` + useQuery({ $$_ref1: value }, { $$_ref1: value2}) + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + expect(matches[0].aliases.identifierAliasesMap['ref1'].aliasValue).toBe( + 'key', + ) + }) }) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/basic.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/basic.test.ts new file mode 100644 index 0000000..962f442 --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/basic.test.ts @@ -0,0 +1,203 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings, compareCode } from '../../utils' + +describe('Basic queries', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should exact match identifier', async () => { + const fileContent = ` + print + ` + const queries = [fileContent] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should exact match function definition', () => { + const fileContent = ` + function fact (n) + if n == 0 then + return 1 + else + return n * fact(n-1) + end + end + ` + const queries = [fileContent] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should partial match function definition', () => { + const fileContent = ` + function fact (n) + if n == 0 then + return 1 + else + return n * fact(n-1) + end + end + ` + const queries = [ + ` + function fact (n) + if n == 0 then + return 1 + end + end + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match multiline', () => { + const fileContent = ` + function setupWS(mode, transmit, setChannel) + local deviceType = mode == "TX" and "transmitter" or "receiver" + local url = "ws://" .. loraServerAddress .. "/" .. deviceType + local headers = {["Authorization"] = "Basic ZnJvZzpoYWt1bmFtYXRhdGE0MzM="} + local ws = wsModule(url, headers) + local transmitEvent = "SEND_" .. (mode == "TX" and "TRANSMITTER" or "RECEIVER") + local transmissionParamsEvent = "TRANSMISSION_PARAMS_" .. (mode == "TX" and "TRANSMITTER" or "RECEIVER") + + ws.on( + transmitEvent, + function(data) + transmit(data.loraPktData) + ws.send(transmitEvent .. "_ACK", true) + end + ) + + ws.on( + transmissionParamsEvent, + function(data) + data.spreadingFactor = "SF" .. data.spreadingFactor + local saveResult = config.saveConfig(data) + setChannel(config.computeFrequency(data.frequency), data.spreadingFactor, data.errorCorrection) + ws.send(transmissionParamsEvent .. "_ACK", saveResult) + end + ) + + return function(data) + local event = mode == "TX" and "TRANSMITTER_DATA" or "RECEIVER_DATA" + ws.send(event, data) + end + end + ` + + const queries = [ + ` + local transmitEvent = "SEND_" .. (mode == "TX" and "TRANSMITTER" or "RECEIVER") + local transmissionParamsEvent = "TRANSMISSION_PARAMS_" .. (mode == "TX" and "TRANSMITTER" or "RECEIVER") + + ws.on( + transmissionParamsEvent, + function(data) + data.spreadingFactor = "SF" .. data.spreadingFactor + local saveResult = config.saveConfig(data) + setChannel(config.computeFrequency(data.frequency), data.spreadingFactor, data.errorCorrection) + ws.send(transmissionParamsEvent .. "_ACK", saveResult) + end + ) + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + const match = matches[0] + + expect(match.loc).toMatchObject({ + start: { line: 7, column: 6 }, + end: { line: 26, column: 7 }, + }) + }) + + it('Should match tuple', () => { + const fileContent = ` + local var = 1,"text" + ` + + const queries = [ + ` + 1,"text" + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + const match = matches[0] + + expect(match.loc).toStrictEqual({ + start: { line: 2, column: 18, index: 19 }, + end: { line: 2, column: 26, index: 27 }, + }) + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/binaryExpression.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/binaryExpression.test.ts new file mode 100644 index 0000000..b3a91f4 --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/binaryExpression.test.ts @@ -0,0 +1,37 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings, compareCode } from '../../utils' + +describe('Binary Expression', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should binary expression based on operator (which is not defined by tree-sitter)', async () => { + const fileContent = ` + local var = a ^ b + local var = a * b + local var = a and b + ` + const queries = [ + ` + local var = a*b + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + expect(matches[0].code).toBe('local var = a * b') + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/functions.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/functions.test.ts new file mode 100644 index 0000000..53ed420 --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/functions.test.ts @@ -0,0 +1,39 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings, compareCode } from '../../utils' + +describe('Functions', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match anonymous function passed as parameter by query with function declaration without name', async () => { + const fileContent = ` + passCallback(function (a) + return a + end + ) + ` + const queries = [ + ` + function (a) + return a + end + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/ifstatement.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/ifstatement.test.ts new file mode 100644 index 0000000..13e72ef --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/ifstatement.test.ts @@ -0,0 +1,34 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings, compareCode } from '../../utils' + +describe('If statement', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match any if statement ', async () => { + const fileContent = ` + if (a) then b() else c() end + ` + const queries = [ + ` + if () then else end + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/literals.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/literals.test.ts new file mode 100644 index 0000000..8088de4 --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/literals.test.ts @@ -0,0 +1,149 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings } from '../../utils' + +describe('Literals', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match string literal', () => { + const fileContent = ` + ws.on( + transmitEvent, + function(data) + transmit(data.loraPktData) + ws.send(transmitEvent .. "_ACK", true) + end + ) + ` + + const queries = [ + ` + '_ACK' + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should exact match template string literal', () => { + const fileContent = ` + f"project:{self.project_id}:rules" + ` + + const queries = [ + ` + f"project:{self.project_id}:rules" + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Integer literal', () => { + const fileContent = ` + val = 123 + ` + + const queries = [ + ` + 123 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Float literal', () => { + const fileContent = ` + val = 123.123 + ` + + const queries = [ + ` + 123.123 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match Hex literal', () => { + const fileContent = ` + val = 0xFF + ` + + const queries = [ + ` + 0xFF + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/table.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/table.test.ts new file mode 100644 index 0000000..9326f9b --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/table.test.ts @@ -0,0 +1,112 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings, compareCode } from '../../utils' + +describe('Tables', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match table with keys exact', async () => { + const fileContent = ` + local header = { + operationType = sdLib.operationTypeNumbers.repeater_telemetry, + transactionNumber = "0" + } + ` + + const queries = [ + ` + { + operationType = sdLib.operationTypeNumbers.repeater_telemetry, + transactionNumber = "0" + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + expect(matches[0].loc).toMatchObject({ + start: { + line: 2, + column: 21, + }, + end: { line: 5, column: 7 }, + }) + }) + + it('Should match table with keys partial', async () => { + const fileContent = ` + local header = { + operationType = sdLib.operationTypeNumbers.repeater_telemetry, + transactionNumber = "0" + } + ` + + const queries = [ + ` + { + transactionNumber = "0" + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match table with values exact', async () => { + const fileContent = ` + local header = { + "text", 123, {nested = 'table'} + } + ` + + const queries = [ + ` + { + "text", 123, {nested = "table"} + } + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'exact', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/Lua/matchCodePatterns/wildcards.test.ts b/packages/core/__tests__/Lua/matchCodePatterns/wildcards.test.ts new file mode 100644 index 0000000..715b32d --- /dev/null +++ b/packages/core/__tests__/Lua/matchCodePatterns/wildcards.test.ts @@ -0,0 +1,154 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { getParserSettings } from '../../utils' + +describe('Wildcards', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should match string wildcard', () => { + const fileContent = ` + ws.on( + transmitEvent, + function(data) + transmit(data.loraPktData) + ws.send(transmitEvent .. "_ACK", true) + end + ) + ` + + const queries = [ + ` + "_$$K" + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match node wildcard', () => { + const fileContent = ` + scopes = function(data) + data.spreadingFactor = "SF" .. data.spreadingFactor + local saveResult = config.saveConfig(data) + setChannel(config.computeFrequency(data.frequency), data.spreadingFactor, data.errorCorrection) + ws.send(transmissionParamsEvent .. "_ACK", saveResult) + end + ` + + const queries = [ + ` + scopes = $$$ + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match identifier wildcard', () => { + const fileContent = ` + scopes = ws.send(transmissionParamsEvent .. "_ACK", saveResult) + ` + + const queries = [ + ` + scopes = ws.$$() + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match integer wildcard', () => { + const fileContent = ` + val = 123 + ` + + const queries = [ + ` + 0x0 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) + + it('Should match float wildcard', () => { + const fileContent = ` + val = 123.123 + ` + + const queries = [ + ` + 0x0 + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + }) +}) diff --git a/packages/core/__tests__/Lua/other/searchWithContext.test.ts b/packages/core/__tests__/Lua/other/searchWithContext.test.ts new file mode 100644 index 0000000..698cffd --- /dev/null +++ b/packages/core/__tests__/Lua/other/searchWithContext.test.ts @@ -0,0 +1,64 @@ +import { searchInStrings } from '../../../src/searchInStrings' +import { compareCode, getParserSettings } from '../../utils' + +describe('Search with context', () => { + beforeAll(async () => { + await getParserSettings().init?.() + }) + + it('Should partial match function definition using wildcard and alias', () => { + const fileContent = ` + function fact (n) + if n == 0 then + print() + return 1 + else + print() + return n * fact(n-1) + end + end + + ` + const queries = [ + ` + function fact (n) + if n == 0 then + $$_refPrint() + return 1 + else + $$_refPrint() + return n * fact(n-1) + end + end + `, + ] + + const { matches, errors } = searchInStrings({ + mode: 'include', + caseInsensitive: true, + queryCodes: queries, + files: [ + { + path: 'mock', + content: fileContent, + }, + ], + }) + + expect(errors).toHaveLength(0) + expect(matches.length).toBe(1) + + const match = matches[0] + + expect(match.aliases.identifierAliasesMap['refPrint'].aliasValue).toBe( + 'print', + ) + + expect(compareCode(fileContent, match.code)).toBe(true) + + expect(match.loc).toStrictEqual({ + start: { line: 2, column: 6, index: 7 }, + end: { line: 10, column: 9, index: 168 }, + }) + }) +}) diff --git a/packages/core/__tests__/common/getFilesList.test.ts b/packages/core/__tests__/common/getFilesList.test.ts index 5c8b144..8945b62 100644 --- a/packages/core/__tests__/common/getFilesList.test.ts +++ b/packages/core/__tests__/common/getFilesList.test.ts @@ -273,6 +273,41 @@ it('should return files for project root with omitting gitignore', async () => { ) }) +it('should use .gitignore only within the current repository', async () => { + mockFs({ + [root]: { + '.git': {}, + project: { + 'fileA.ts': 'content', + '.gitignore': 'packageA/*', + packageA: { + '.git': {}, + '.env': 'content', + '.gitignore': ` + .env + `, + src: { + 'fileE.json': '', + }, + }, + }, + }, + }) + + const filesList = removeCwd( + await getFilesList({ + searchRoot: toPlatformSpecificPath(`${root}/project/packageA`), + }), + ) + mockFs.restore() + + expect(filesList.sort()).toMatchObject( + [`${root}/project/packageA/src/fileE.json`] + .sort() + .map(toPlatformSpecificPath), + ) +}) + // We will add option to search in ignored files, so that exception is not needed it.skip('should return files for project root ignored by parent gitignore, but ignore the nested directories', async () => { mockFs({ @@ -321,6 +356,7 @@ it.skip('should return files for project root ignored by parent gitignore, but i it('should ignore files from parent .gitignore', async () => { mockFs({ [root]: { + '.git': {}, project: { 'fileA.ts': 'content', 'fileB.js': 'content', diff --git a/packages/core/__tests__/common/matchContext.test.ts b/packages/core/__tests__/common/matchContext.test.ts new file mode 100644 index 0000000..d099d82 --- /dev/null +++ b/packages/core/__tests__/common/matchContext.test.ts @@ -0,0 +1,50 @@ +import { createMatchContext } from '../../src/matchContext' + +describe('Match context data structure', () => { + it('should prove creating new match context form other outputs independent data structure', () => { + const first = createMatchContext() + + first.addIdentifierAlias({ + wildcard: '$$', + alias: 'ref', + aliasValue: 'identifier', + }) + + const second = createMatchContext(first.getAllAliases()) + + second.addIdentifierAlias({ + wildcard: '$$', + alias: 'ref2', + aliasValue: 'identifier2', + }) + + expect(first.getIdentifierAlias('ref')?.aliasValue).toBe('identifier') + expect(first.getIdentifierAlias('ref2')).toBe(null) + + expect(second.getIdentifierAlias('ref')?.aliasValue).toBe('identifier') + expect(second.getIdentifierAlias('ref2')?.aliasValue).toBe('identifier2') + }) + + it('should merge one context into another', () => { + const first = createMatchContext() + + first.addIdentifierAlias({ + wildcard: '$$', + alias: 'ref', + aliasValue: 'identifier', + }) + + const second = createMatchContext() + + second.addIdentifierAlias({ + wildcard: '$$', + alias: 'ref2', + aliasValue: 'identifier2', + }) + + first.merge(second.getAllAliases()) + + expect(first.getIdentifierAlias('ref')?.aliasValue).toBe('identifier') + expect(first.getIdentifierAlias('ref2')?.aliasValue).toBe('identifier2') + }) +}) diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js index 3f0cb4b..a6c114c 100644 --- a/packages/core/jest.config.js +++ b/packages/core/jest.config.js @@ -18,6 +18,8 @@ const typeScriptParserTestFiles = [ const htmlParserTestFiles = ['/__tests__/HTML/**/*.test.ts'] const cssParserTestFiles = ['/__tests__/CSS/**/*.test.ts'] const pythonParserTestFiles = ['/__tests__/Python/**/*.test.ts'] +const luaParserTestFiles = ['/__tests__/Lua/**/*.test.ts'] +const csharpParserTestFiles = ['/__tests__/CSharp/**/*.test.ts'] module.exports = { testPathIgnorePatterns: [ @@ -163,5 +165,23 @@ module.exports = { '/jest/python.setup.ts', ], }, + { + ...sharedConfig, + displayName: { name: 'lua', color: 'gray' }, + testMatch: luaParserTestFiles, + setupFiles: [ + '/jest/shared.setup.ts', + '/jest/lua.setup.ts', + ], + }, + { + ...sharedConfig, + displayName: { name: 'csharp', color: 'magenta' }, + testMatch: csharpParserTestFiles, + setupFiles: [ + '/jest/shared.setup.ts', + '/jest/csharp.setup.ts', + ], + }, ], } diff --git a/packages/core/jest/csharp.setup.ts b/packages/core/jest/csharp.setup.ts new file mode 100644 index 0000000..2151adc --- /dev/null +++ b/packages/core/jest/csharp.setup.ts @@ -0,0 +1,4 @@ +global.testSettings = { + parserType: 'csharp', + isTraversal: false, +} diff --git a/packages/core/jest/lua.setup.ts b/packages/core/jest/lua.setup.ts new file mode 100644 index 0000000..70af4be --- /dev/null +++ b/packages/core/jest/lua.setup.ts @@ -0,0 +1,4 @@ +global.testSettings = { + parserType: 'lua', + isTraversal: false, +} diff --git a/packages/core/package.json b/packages/core/package.json index cb76a26..ce75449 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@codeque/core", - "version": "0.6.0", + "version": "0.6.1", "description": "Multiline code search for every language. Structural code search for JavaScript, TypeScript, HTML and CSS", "author": "Jakub Mazurek (@jayu) ", "license": "Sustainable Use License", @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-eslint/template-parser": "^15.2.1", - "@babel/eslint-parser": "^7.21.8", - "@babel/generator": "^7.21.4", + "@babel/eslint-parser": "7.28.5", + "@babel/generator": "7.28.5", "@types/dedent": "^0.7.0", "@types/esprima": "^4.0.3", "@types/glob": "^7.2.0", @@ -51,11 +51,12 @@ "node-fetch-commonjs": "^3.1.1", "release-it": "^15.0.0", "ts-jest": "^27.1.1", - "unzipper": "^0.10.11" + "unzipper": "^0.10.11", + "typescript": "5.9.3" }, "dependencies": { - "@babel/parser": "7.19.4", - "@babel/plugin-syntax-typescript": "7.18.6", + "@babel/parser": "7.28.5", + "@babel/plugin-syntax-typescript": "7.27.1", "@types/css-tree": "^2.3.1", "dedent": "^0.7.0", "dpdm": "^3.12.0", @@ -78,6 +79,7 @@ "typecheck": "tsc --project tsconfig.json", "test": "yarn build:test && NODE_OPTIONS=--max-old-space-size=4000 yarn jest --maxWorkers=25%", "test:babel": "jest --selectProjects=babel", + "test:common": "jest --selectProjects=common", "test:babel:traversal": "jest --selectProjects=babel:traversal", "test:babel-eslint-parser": "jest --selectProjects=babel-eslint-parser", "test:babel-eslint-parser:traversal": "jest --selectProjects=babel-eslint-parser:traversal", @@ -89,6 +91,8 @@ "test:espree:traversal": "jest --selectProjects=espree:traversal", "test:angular-eslint-template-parser": "jest --selectProjects=angular-eslint-template-parser", "test:python": "jest --selectProjects=python", + "test:lua": "jest --selectProjects=lua", + "test:csharp": "jest --selectProjects=csharp", "test:css-tree": "jest --selectProjects=css-tree", "test:circular": "dpdm --exit-code circular:1 --tree=false --warning=false './src/**'", "test:setup": "node ./tools/getFixtures.js", diff --git a/packages/core/src/getFilesList.ts b/packages/core/src/getFilesList.ts index 8f50412..f64b20a 100644 --- a/packages/core/src/getFilesList.ts +++ b/packages/core/src/getFilesList.ts @@ -2,7 +2,7 @@ import path from 'path' import { promises as fs } from 'fs' import ignore from 'ignore' -import { asyncFilter, measureStart } from './utils' +import { measureStart } from './utils' import minimatch from 'minimatch' import { parseDependencyTree } from 'dpdm/lib/index.js' import { spawnSync } from 'child_process' @@ -15,6 +15,8 @@ export const typeScriptFamilyExtensionTester = /\.(js|jsx|ts|tsx|json|mjs|cjs)$/ export const htmlFamilyExtensionTester = /\.(html|htm)$/ export const cssExtensionTester = /\.(css)$/ export const pythonExtensionTester = /\.(py)$/ +export const luaExtensionTester = /\.(lua)$/ +export const csharpExtensionTester = /\.(cs)$/ /** * @deprecated use `typeScriptFamilyExtensionTester` instead @@ -177,6 +179,32 @@ export type GetFilesListArgs = { extensionTester?: RegExp } +const findRepoRoot = async ({ + searchRoot, + fsRoot, +}: { + searchRoot: string + fsRoot: string +}) => { + let currentDir = path.resolve(searchRoot) + while (currentDir !== fsRoot) { + try { + const gitDir = path.join(currentDir, '.git') + const stat = await fs.lstat(gitDir) + + if (stat.isDirectory()) { + return currentDir + } + } catch (_e) { + // .git not found, continue + } + + currentDir = path.dirname(currentDir) + } + + return searchRoot +} + export const getFilesList = async ({ searchRoot: _searchRoot, entryPoint = undefined, @@ -202,25 +230,21 @@ export const getFilesList = async ({ } else { const InitialIgnore = ignoreNodeModules ? ['node_modules'] : [] - // Get parent to root gitignore if (!omitGitIgnore) { - const searchRootSegments = searchRoot - .replace(fsRoot, '') - .split(pathSeparatorChar) - - const pathSegmentsToSystemRoot = [] + const repoRoot = await findRepoRoot({ searchRoot, fsRoot }) + const parentPaths = [] + let currentPath = searchRoot - for (let i = 0; i < searchRootSegments.length; i++) { - let currentPath = searchRootSegments.slice(0, i).join(pathSeparatorChar) - - currentPath = fsRoot + currentPath - - pathSegmentsToSystemRoot.push(currentPath) + while (currentPath !== repoRoot) { + parentPaths.push(currentPath) + currentPath = path.dirname(currentPath) } + parentPaths.push(repoRoot) + const parentDirsIgnore = ( await Promise.all( - pathSegmentsToSystemRoot.map((parentPath) => + parentPaths.map((parentPath) => getGitIgnoreContentForDirectory(parentPath), ), ) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index aa6d99e..8610240 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -11,6 +11,8 @@ export { htmlFamilyExtensionTester, cssExtensionTester, pythonExtensionTester, + luaExtensionTester, + csharpExtensionTester, pathToPosix, filterExtensions, } from './getFilesList' diff --git a/packages/core/src/matchContext.ts b/packages/core/src/matchContext.ts index cabb2b1..9ec7965 100644 --- a/packages/core/src/matchContext.ts +++ b/packages/core/src/matchContext.ts @@ -48,12 +48,13 @@ export type MatchContext = { addNodesTreeAlias: (ref: NodesTreeWildcardAlias) => void getNodesTreeAlias: (alias: string) => NodesTreeWildcardAlias | null getAllAliases: () => MatchContextAliases + merge: (contextMatchAliases: MatchContextAliases) => void } export const createMatchContext = ( initialContext?: MatchContextAliases, ): MatchContext => { - const identifierAliasesMap: IdentifierWildcardAliasesMap = initialContext + let identifierAliasesMap: IdentifierWildcardAliasesMap = initialContext ? { ...(initialContext.identifierAliasesMap ?? {}) } : {} const addIdentifierAlias = (wildcardAlias: IdentifierWildcardAlias) => { @@ -64,7 +65,7 @@ export const createMatchContext = ( return identifierAliasesMap[alias] ?? null } - const stringAliasesMap: StringWildcardAliasesMap = initialContext + let stringAliasesMap: StringWildcardAliasesMap = initialContext ? { ...(initialContext.stringAliasesMap ?? {}) } : {} const addStringAlias = (wildcardAlias: StringWildcardAlias) => { @@ -75,7 +76,7 @@ export const createMatchContext = ( return stringAliasesMap[alias] ?? null } - const nodesTreeAliasesMap: NodesTreeWildcardAliasesMap = initialContext + let nodesTreeAliasesMap: NodesTreeWildcardAliasesMap = initialContext ? { ...(initialContext.nodesTreeAliasesMap ?? {}) } : {} @@ -87,6 +88,23 @@ export const createMatchContext = ( return nodesTreeAliasesMap[alias] ?? null } + const merge = (aliasesToMerge: MatchContextAliases) => { + identifierAliasesMap = { + ...identifierAliasesMap, + ...aliasesToMerge.identifierAliasesMap, + } + + stringAliasesMap = { + ...stringAliasesMap, + ...aliasesToMerge.stringAliasesMap, + } + + nodesTreeAliasesMap = { + ...nodesTreeAliasesMap, + ...aliasesToMerge.nodesTreeAliasesMap, + } + } + return { addIdentifierAlias, getIdentifierAlias, @@ -99,5 +117,6 @@ export const createMatchContext = ( stringAliasesMap, nodesTreeAliasesMap, }), + merge, } } diff --git a/packages/core/src/parseQuery.ts b/packages/core/src/parseQuery.ts index af69e28..77111ad 100644 --- a/packages/core/src/parseQuery.ts +++ b/packages/core/src/parseQuery.ts @@ -272,6 +272,7 @@ export const parseQueries = ( } } + // TODO move to parse code, specific to JS try { const parsedAsExp = parserSettings.parseCode( `(${preprocessedQueryCode})`, diff --git a/packages/core/src/parserSettings/csharp/common.ts b/packages/core/src/parserSettings/csharp/common.ts new file mode 100644 index 0000000..c045f63 --- /dev/null +++ b/packages/core/src/parserSettings/csharp/common.ts @@ -0,0 +1,24 @@ +import { createWildcardUtils } from '../../wildcardUtilsFactory' +import { PoorNodeType } from '../../types' + +export const identifierNodeTypes: string[] = ['identifier'] + +const wildcardChar = '$' +const numericWildcard = '0x0' + +export const getIdentifierNodeName = (node: PoorNodeType) => + node.rawValue as string + +export const setIdentifierNodeName = (node: PoorNodeType, name: string) => { + node.rawValue = name +} + +export const getNodeType = (node: PoorNodeType) => node.nodeType as string + +export const wildcardUtils = createWildcardUtils( + identifierNodeTypes, + numericWildcard, + wildcardChar, + getIdentifierNodeName, + getNodeType, +) diff --git a/packages/core/src/parserSettings/csharp/parseCode.ts b/packages/core/src/parserSettings/csharp/parseCode.ts new file mode 100644 index 0000000..e9688cf --- /dev/null +++ b/packages/core/src/parserSettings/csharp/parseCode.ts @@ -0,0 +1,17 @@ +import { treeSitterParserModuleFactory } from '../../treeSitterUtils' + +const defineRawValueForNodeTypes = [ + 'identifier', + 'integer_literal', + 'string_literal_content', + 'real_literal', +] + +export const parserModule = treeSitterParserModuleFactory({ + treeSitterParserName: 'tree-sitter-c-sharp', + defineRawValueForNodeTypes, +}) + +export function parseCode(code: string) { + return parserModule.parse(code) +} diff --git a/packages/core/src/parserSettings/csharp/settings.ts b/packages/core/src/parserSettings/csharp/settings.ts new file mode 100644 index 0000000..5134784 --- /dev/null +++ b/packages/core/src/parserSettings/csharp/settings.ts @@ -0,0 +1,199 @@ +import { traverseAst } from '../../searchStages/traverseAndMatch' +import { + Location, + MatchPosition, + NumericLiteralUtils, + ParserSettings, + PoorNodeType, + ProgramNodeAndBlockNodeUtils, + StringLikeLiteralUtils, +} from '../../types' + +import { + getIdentifierNodeName, + getNodeType, + identifierNodeTypes, + setIdentifierNodeName, + wildcardUtils, +} from './common' +import { parseCode, parserModule } from './parseCode' + +const supportedExtensions = ['cs'] + +const getProgramNodeFromRootNode = (rootNode: PoorNodeType) => rootNode // root node is program node + +const getProgramBodyFromRootNode = (fileNode: PoorNodeType) => { + return fileNode.children as PoorNodeType[] +} + +const unwrapExpressionStatement = (node: PoorNodeType) => { + if (node.nodeType === 'global_statement' && node.children) { + const exprChild = (node.children as PoorNodeType[])[0] as PoorNodeType + + if (exprChild.nodeType === 'expression_statement' && exprChild.children) { + const parChild = (exprChild.children as PoorNodeType[])[0] as PoorNodeType + + if ( + parChild.nodeType === 'parenthesized_expression' && + parChild.children + ) { + return (parChild.children as PoorNodeType[])[0] as PoorNodeType + } + } + } + + return node +} + +const createBlockStatementNode = ( + children: PoorNodeType[], + position: MatchPosition, +) => ({ + nodeType: 'block', + children, + ...position, +}) + +const isNode = (maybeNode: PoorNodeType) => { + return typeof maybeNode?.nodeType === 'string' +} + +/* start and end is added by CQ in multiline queries */ +const astPropsToSkip = ['loc', 'start', 'end'] + +type NodeValueSanitizers = Record any>> + +const nodeValuesSanitizers: NodeValueSanitizers = {} + +const getSanitizedNodeValue = ( + nodeType: string, + valueKey: string, + value: unknown, +) => { + const valueSanitizer = nodeValuesSanitizers?.[nodeType]?.[valueKey] + + if (valueSanitizer) { + return valueSanitizer(value) + } + + return value +} + +const shouldCompareNode = (node: PoorNodeType) => { + return true +} + +const isIdentifierNode = (node: PoorNodeType) => + identifierNodeTypes.includes(getNodeType(node)) + +const stringLikeLiteralUtils: StringLikeLiteralUtils = { + isStringLikeLiteralNode: (node: PoorNodeType) => + node.nodeType === 'string_literal_content', + getStringLikeLiteralValue: (node: PoorNodeType) => { + return node?.rawValue as string + }, +} + +const numericLiteralUtils: NumericLiteralUtils = { + isNumericLiteralNode: (node: PoorNodeType) => + node.nodeType === 'integer_literal' || node.nodeType === 'real_literal', + getNumericLiteralValue: (node: PoorNodeType) => node?.rawValue as string, +} + +const programNodeAndBlockNodeUtils: ProgramNodeAndBlockNodeUtils = { + isProgramNode: (node: PoorNodeType) => node.nodeType === 'compilation_unit', + isBlockNode: (node: PoorNodeType) => node.nodeType === 'block', + programNodeBodyKey: 'children', + blockNodeBodyKey: 'children', +} + +const getNodePosition: ParserSettings['getNodePosition'] = ( + node: PoorNodeType, +) => ({ + start: ((node?.loc as any)?.start?.index as number) ?? 0, + end: ((node?.loc as any)?.end?.index as number) ?? 0, + loc: node.loc as unknown as Location, +}) + +const getParseErrorLocation = (e: any) => ({ + line: e.loc?.start?.line ?? 0, + column: e.loc?.start?.column ?? 0, +}) + +const alternativeNodeTypes = { + identifier: identifierNodeTypes, +} + +const encodedIdentifierWildcardSequence = 'a_x_2_x_a' +const encodedNodeWildcardSequence = 'a_x_3_x_a' + +const preprocessQueryCode = (code: string) => { + const queryCode = code + .replace(/(\$\$\$)/g, () => encodedNodeWildcardSequence) + .replace(/(\$\$)/g, () => encodedIdentifierWildcardSequence) + + return queryCode +} + +const replaceEncodedWildcards = (value: string) => + value.replace(/a_x_3_x_a/g, () => '$$$').replace(/a_x_2_x_a/g, () => '$$') + +const postprocessQueryNode = (queryNode: PoorNodeType) => { + traverseAst(queryNode, isNode, getNodeType, { + identifier: (node) => { + const nodeName = node.rawValue as string + + if ( + nodeName.includes(encodedNodeWildcardSequence) || + nodeName.includes(encodedIdentifierWildcardSequence) + ) { + node.rawValue = replaceEncodedWildcards(nodeName) + } + }, + string_literal_content: (node) => { + const nodeName = node.rawValue as string + + if ( + nodeName.includes(encodedNodeWildcardSequence) || + nodeName.includes(encodedIdentifierWildcardSequence) + ) { + node.rawValue = replaceEncodedWildcards(nodeName) + } + }, + }) + + return queryNode +} + +export const csharpParser: ParserSettings = { + supportedExtensions, + parseCode, + isNode, + isIdentifierNode, + astPropsToSkip, + getProgramBodyFromRootNode, + getProgramNodeFromRootNode, + getIdentifierNodeName, + getNodeType, + unwrapExpressionStatement, + createBlockStatementNode, + getSanitizedNodeValue, + identifierNodeTypes, + setIdentifierNodeName, + shouldCompareNode, + wildcardUtils, + compareNodesBeforeWildcardsComparison: () => undefined, + compareNodesAfterWildcardsComparison: () => undefined, + identifierTypeAnnotationFieldName: '', + stringLikeLiteralUtils, + numericLiteralUtils, + programNodeAndBlockNodeUtils, + getNodePosition, + getParseErrorLocation, + alternativeNodeTypes, + preprocessQueryCode, + postprocessQueryNode, + init: parserModule.init, +} + +export default csharpParser diff --git a/packages/core/src/parserSettings/index.ts b/packages/core/src/parserSettings/index.ts index b07fdff..3cf8479 100644 --- a/packages/core/src/parserSettings/index.ts +++ b/packages/core/src/parserSettings/index.ts @@ -15,4 +15,6 @@ export const parserSettingsMap: Record ParserSettings> = { ), ['css-tree']: resolveParserSettings('cssTree'), ['python']: resolveParserSettings('python'), + ['lua']: resolveParserSettings('lua'), + ['csharp']: resolveParserSettings('csharp'), } diff --git a/packages/core/src/parserSettings/lua/common.ts b/packages/core/src/parserSettings/lua/common.ts new file mode 100644 index 0000000..c045f63 --- /dev/null +++ b/packages/core/src/parserSettings/lua/common.ts @@ -0,0 +1,24 @@ +import { createWildcardUtils } from '../../wildcardUtilsFactory' +import { PoorNodeType } from '../../types' + +export const identifierNodeTypes: string[] = ['identifier'] + +const wildcardChar = '$' +const numericWildcard = '0x0' + +export const getIdentifierNodeName = (node: PoorNodeType) => + node.rawValue as string + +export const setIdentifierNodeName = (node: PoorNodeType, name: string) => { + node.rawValue = name +} + +export const getNodeType = (node: PoorNodeType) => node.nodeType as string + +export const wildcardUtils = createWildcardUtils( + identifierNodeTypes, + numericWildcard, + wildcardChar, + getIdentifierNodeName, + getNodeType, +) diff --git a/packages/core/src/parserSettings/lua/parseCode.ts b/packages/core/src/parserSettings/lua/parseCode.ts new file mode 100644 index 0000000..6b7b3c9 --- /dev/null +++ b/packages/core/src/parserSettings/lua/parseCode.ts @@ -0,0 +1,193 @@ +import { treeSitterParserModuleFactory } from '../../treeSitterUtils' +import { PoorNodeType, Location } from '../../types' + +const defineRawValueForNodeTypes = ['identifier', 'number', 'string_content'] + +const postProcessNodes = { + function_declaration: (node: PoorNodeType) => { + /** + * Global scope function declaration without name should be same as anonymous function definition passed as argument + */ + if ((node.name as PoorNodeType)?.rawValue === '') { + node.nodeType = 'function_definition' + node.name = null + + return node + } + + return node + }, + function_definition: (node: PoorNodeType) => { + /** + * Anonymous function definition should have null name field to be compared with `function_declaration` changed into `function_definition` + * We could use delete operator on `function_declaration`, but it's slow. + */ + if (node.name === undefined) { + node.name = null + } + + return node + }, + binary_expression: (node: PoorNodeType, codeText: string) => { + const leftNodeLocationLoc = (node.left as PoorNodeType).loc as Location + + const leftNodeLocationEndIndex = leftNodeLocationLoc.end.index as number + + const rightNodeLocationLoc = (node.right as PoorNodeType).loc as Location + + const rightNodeLocationStartIndex = rightNodeLocationLoc.start + .index as number + + const operator = codeText.substring( + leftNodeLocationEndIndex, + rightNodeLocationStartIndex, + ) + + const operatorNode = { + nodeType: '__codeque__operator', + rawValue: operator.trim(), + loc: { + /** + * We could adjust location to be without spaces, but it does not matter actually + */ + start: leftNodeLocationLoc.end, + end: rightNodeLocationLoc.start, + }, + } + + node.operator = operatorNode + + return node + }, + function_call: (node: PoorNodeType) => { + if ((node.name as PoorNodeType).rawValue === '') { + const actualContent = ( + (node.arguments as PoorNodeType).children as PoorNodeType[] + )[0] + + return { + nodeType: 'expression_list', + loc: node.loc, + children: [actualContent], + } + } + + return node + }, + parenthesized_expression: (node: PoorNodeType) => { + const children = node.children as PoorNodeType[] + + // Remove empty identifiers from parenthesized_expression + if ( + children.length === 1 && + (children[0] as PoorNodeType)?.rawValue === '' + ) { + return { ...node, children: [] } + } + + return node + }, +} + +export const parserModule = treeSitterParserModuleFactory({ + treeSitterParserName: 'tree-sitter-lua', + postProcessNodes, + defineRawValueForNodeTypes, +}) + +const isRawString = (code: string) => { + const trimmedCode = code.trim() + + return ( + !trimmedCode.includes('\n') && + ((trimmedCode.startsWith("'") && trimmedCode.endsWith("'")) || + (trimmedCode.startsWith('"') && trimmedCode.endsWith('"'))) + ) +} + +export function parseCode(code: string) { + const trimmedCode = code.trim() + + if (isRawString(trimmedCode)) { + /** + * Just string literal query is strangely parsed, so we parse it manually + */ + const loc = { + start: { + line: 1, + column: 0, + index: 0, + }, + end: { + line: 1, + column: trimmedCode.length, + index: trimmedCode.length, + }, + } + + return { + nodeType: 'chunk', + loc, + children: [ + { + nodeType: 'expression_list', + loc, + children: [ + { + nodeType: 'string', + loc, + content: { + nodeType: 'string_content', + loc: { + start: { + line: 1, + column: loc.start.column + 1, + index: loc.start.index + 1, + }, + end: { + line: 1, + column: loc.end.column - 1, + index: loc.end.index - 1, + }, + }, + children: [], + rawValue: trimmedCode.substring(1, trimmedCode.length - 1), + }, + end: null, + start: null, + }, + ], + }, + ], + } + } + + try { + return parserModule.parse(code) + } catch (originalCodeParserError) { + /** + * Lua does not support standalone expressions in the code. + * + * To workaround that, when parser error occurs, we create variable assignment to extract expression_list + * + * we throw original error if that extraction fails, because our changes might produce also broken code. + */ + + try { + const modifiedCode = `__codeque = ${trimmedCode}` + + const modifiedCodeAst = parserModule.parse(modifiedCode) + + const expression_list = (modifiedCodeAst as any)?.children?.[0] + ?.children?.[1] as PoorNodeType + + return { + nodeType: 'chunk', + loc: expression_list.loc, + children: [expression_list], + } + } catch (e) { + throw originalCodeParserError + } + } +} diff --git a/packages/core/src/parserSettings/lua/settings.ts b/packages/core/src/parserSettings/lua/settings.ts new file mode 100644 index 0000000..02a349c --- /dev/null +++ b/packages/core/src/parserSettings/lua/settings.ts @@ -0,0 +1,197 @@ +import { traverseAst } from '../../searchStages/traverseAndMatch' +import { + Location, + MatchPosition, + NumericLiteralUtils, + ParserSettings, + PoorNodeType, + ProgramNodeAndBlockNodeUtils, + StringLikeLiteralUtils, +} from '../../types' + +import { + getIdentifierNodeName, + getNodeType, + identifierNodeTypes, + setIdentifierNodeName, + wildcardUtils, +} from './common' +import { parseCode, parserModule } from './parseCode' + +const supportedExtensions = ['lua'] + +const getProgramNodeFromRootNode = (rootNode: PoorNodeType) => rootNode // root node is program node + +const getProgramBodyFromRootNode = (fileNode: PoorNodeType) => { + return fileNode.children as PoorNodeType[] +} + +/** + * + * Lua has expression list, so there can be a tuple + * For single expression return it, for multiple expressions, return expression_list node, so the original node + */ + +const unwrapExpressionStatement = (node: PoorNodeType) => { + if (node.nodeType === 'expression_list' && node.children) { + const children = node.children as PoorNodeType[] + + if (children.length === 1) { + return children[0] + } + } + + return node +} + +const createBlockStatementNode = ( + children: PoorNodeType[], + position: MatchPosition, +) => ({ + nodeType: 'block', + children, + ...position, +}) + +const isNode = (maybeNode: PoorNodeType) => { + return typeof maybeNode?.nodeType === 'string' +} + +/* start and end is added by CQ in multiline queries */ +const astPropsToSkip = ['loc', 'start', 'end'] + +type NodeValueSanitizers = Record any>> + +const nodeValuesSanitizers: NodeValueSanitizers = {} + +const getSanitizedNodeValue = ( + nodeType: string, + valueKey: string, + value: unknown, +) => { + const valueSanitizer = nodeValuesSanitizers?.[nodeType]?.[valueKey] + + if (valueSanitizer) { + return valueSanitizer(value) + } + + return value +} + +const shouldCompareNode = (node: PoorNodeType) => { + return true +} + +const isIdentifierNode = (node: PoorNodeType) => + identifierNodeTypes.includes(getNodeType(node)) + +const stringLikeLiteralUtils: StringLikeLiteralUtils = { + isStringLikeLiteralNode: (node: PoorNodeType) => + node.nodeType === 'string_content', + getStringLikeLiteralValue: (node: PoorNodeType) => { + return node?.rawValue as string + }, +} + +const numericLiteralUtils: NumericLiteralUtils = { + isNumericLiteralNode: (node: PoorNodeType) => node.nodeType === 'number', + getNumericLiteralValue: (node: PoorNodeType) => node?.rawValue as string, +} + +const programNodeAndBlockNodeUtils: ProgramNodeAndBlockNodeUtils = { + isProgramNode: (node: PoorNodeType) => node.nodeType === 'chunk', + isBlockNode: (node: PoorNodeType) => node.nodeType === 'block', + programNodeBodyKey: 'children', + blockNodeBodyKey: 'children', +} + +const getNodePosition: ParserSettings['getNodePosition'] = ( + node: PoorNodeType, +) => ({ + start: ((node?.loc as any)?.start?.index as number) ?? 0, + end: ((node?.loc as any)?.end?.index as number) ?? 0, + loc: node.loc as unknown as Location, +}) + +const getParseErrorLocation = (e: any) => ({ + line: e.loc?.start?.line ?? 0, + column: e.loc?.start?.column ?? 0, +}) + +const alternativeNodeTypes = { + identifier: identifierNodeTypes, +} + +const encodedIdentifierWildcardSequence = 'a_x_2_x_a' +const encodedNodeWildcardSequence = 'a_x_3_x_a' + +const preprocessQueryCode = (code: string) => { + const queryCode = code + .replace(/(\$\$\$)/g, () => encodedNodeWildcardSequence) + .replace(/(\$\$)/g, () => encodedIdentifierWildcardSequence) + + return queryCode +} + +const replaceEncodedWildcards = (value: string) => + value.replace(/a_x_3_x_a/g, () => '$$$').replace(/a_x_2_x_a/g, () => '$$') + +const postprocessQueryNode = (queryNode: PoorNodeType) => { + traverseAst(queryNode, isNode, getNodeType, { + identifier: (node) => { + const nodeName = node.rawValue as string + + if ( + nodeName.includes(encodedNodeWildcardSequence) || + nodeName.includes(encodedIdentifierWildcardSequence) + ) { + node.rawValue = replaceEncodedWildcards(nodeName) + } + }, + string_content: (node) => { + const nodeName = node.rawValue as string + + if ( + nodeName.includes(encodedNodeWildcardSequence) || + nodeName.includes(encodedIdentifierWildcardSequence) + ) { + node.rawValue = replaceEncodedWildcards(nodeName) + } + }, + }) + + return queryNode +} + +export const pythonParser: ParserSettings = { + supportedExtensions, + parseCode, + isNode, + isIdentifierNode, + astPropsToSkip, + getProgramBodyFromRootNode, + getProgramNodeFromRootNode, + getIdentifierNodeName, + getNodeType, + unwrapExpressionStatement, + createBlockStatementNode, + getSanitizedNodeValue, + identifierNodeTypes, + setIdentifierNodeName, + shouldCompareNode, + wildcardUtils, + compareNodesBeforeWildcardsComparison: () => undefined, + compareNodesAfterWildcardsComparison: () => undefined, + identifierTypeAnnotationFieldName: '', + stringLikeLiteralUtils, + numericLiteralUtils, + programNodeAndBlockNodeUtils, + getNodePosition, + getParseErrorLocation, + alternativeNodeTypes, + preprocessQueryCode, + postprocessQueryNode, + init: parserModule.init, +} + +export default pythonParser diff --git a/packages/core/src/parserSettings/python/parseCode.ts b/packages/core/src/parserSettings/python/parseCode.ts index 90a7892..3c398b3 100644 --- a/packages/core/src/parserSettings/python/parseCode.ts +++ b/packages/core/src/parserSettings/python/parseCode.ts @@ -1,12 +1,4 @@ -import Parser from 'web-tree-sitter' -import { - collectAstFromTree, - getFilePaths, - getFieldsMeta, - getTreeSitterWasmPath, -} from '../../treeSitterUtils' - -import { TreeSitterNodeFieldsMeta } from '../../types' +import { treeSitterParserModuleFactory } from '../../treeSitterUtils' const defineRawValueForNodeTypes = [ 'identifier', @@ -15,80 +7,10 @@ const defineRawValueForNodeTypes = [ 'float', ] -const getDefaultBasePath = () => { - return typeof process?.cwd !== 'undefined' ? process.cwd() : '/' -} - -export const parserModule = (() => { - const treeSitterParserName = 'tree-sitter-python' - let parser: Parser | null = null - let parserInitError: Error | null = null - let fieldsMeta: TreeSitterNodeFieldsMeta | null = null - - const filePaths = getFilePaths(treeSitterParserName) - - const init = async (basePathOption?: string | undefined) => { - if (parser) { - return - } - - const basePath = basePathOption ?? getDefaultBasePath() - - return Parser.init({ - locateFile: () => - getTreeSitterWasmPath(basePath, filePaths.treeSitterWasm), - }) - .then(async () => { - fieldsMeta = await getFieldsMeta(basePath, filePaths.fieldsMeta) - const Python = await Parser.Language.load( - getTreeSitterWasmPath(basePath, filePaths.parserWasm), - ) - - const localParser = new Parser() - - localParser.setLanguage(Python) - parser = localParser - }) - .catch((error) => { - console.error('Parser init error', error) - parser = null - parserInitError = error - }) - } - - const parse = (code: string) => { - if (parserInitError !== null) { - throw parserInitError - } - - if (parser === null) { - throw new Error('Parser not ready') - } - - if (fieldsMeta === null) { - throw new Error("Couldn't load fields meta") - } - - if (parserInitError) { - throw parserInitError - } - - const tree = parser.parse(code, undefined) - - const ast = collectAstFromTree( - tree, - code, - defineRawValueForNodeTypes, - fieldsMeta, - ) - - tree.delete() - - return ast ?? { nodeType: 'empty' } // this is to make TS happy, won't happen in real life. - } - - return { init, parse } -})() +export const parserModule = treeSitterParserModuleFactory({ + treeSitterParserName: 'tree-sitter-python', + defineRawValueForNodeTypes, +}) export function parseCode(code: string) { return parserModule.parse(code) diff --git a/packages/core/src/parserSettings/python/settings.ts b/packages/core/src/parserSettings/python/settings.ts index 61fa627..e2fd6cc 100644 --- a/packages/core/src/parserSettings/python/settings.ts +++ b/packages/core/src/parserSettings/python/settings.ts @@ -184,10 +184,3 @@ export const pythonParser: ParserSettings = { } export default pythonParser - -/** - * TODOs: - * - Note that python support is experimental (in search settings) - * - Mention python in readme and keywords - * - fix layout bug with wrapping search modes - */ diff --git a/packages/core/src/searchStages/compareNodes.ts b/packages/core/src/searchStages/compareNodes.ts index f3bc418..0db7618 100644 --- a/packages/core/src/searchStages/compareNodes.ts +++ b/packages/core/src/searchStages/compareNodes.ts @@ -146,6 +146,7 @@ export const compareNodes = ( log('First Wildcard type', firstWildcard.wildcardType) log('wildcardWithoutAlias', firstWildcard.wildcardWithoutAlias) + log('MatchContext aliases', matchContext.getAllAliases()) if (isNodesTreeWildcard) { levelMatch = true diff --git a/packages/core/src/searchStages/searchFileContent.ts b/packages/core/src/searchStages/searchFileContent.ts index f81f1b6..1a560eb 100644 --- a/packages/core/src/searchStages/searchFileContent.ts +++ b/packages/core/src/searchStages/searchFileContent.ts @@ -37,6 +37,10 @@ export const searchFileContent = ({ if (shallowSearchPassed) { const measureParseFile = measureStart('parseFile') + /** + * + * Used for debugging + */ const getCodeForFileNode = (node: PoorNodeType) => { const pos = settings.parserSettings.getNodePosition(node) diff --git a/packages/core/src/searchStages/traverseAndMatch.ts b/packages/core/src/searchStages/traverseAndMatch.ts index 166095c..92edb12 100644 --- a/packages/core/src/searchStages/traverseAndMatch.ts +++ b/packages/core/src/searchStages/traverseAndMatch.ts @@ -112,13 +112,18 @@ export const test_traverseAndMatchWithVisitors = ( const searchInPath = (node: PoorNodeType) => { const matchContext = createMatchContext(initialMatchContext) - const match = validateMatch(node, queryNode, settings, matchContext) + const { match, matchContext: extendedMatchContext } = validateMatch( + node, + queryNode, + settings, + matchContext, + ) if (match) { const matchData = getMatchFromNode( node, settings.parserSettings, - matchContext.getAllAliases(), + extendedMatchContext.getAllAliases(), ) matches.push(matchData) } @@ -176,7 +181,7 @@ export const traverseAndMatch = ( logStepStart('traverse') const matches = [] - const matchContext = createMatchContext(initialMatchContext) + const localMatchContext = createMatchContext(initialMatchContext) /** * LOOK FOR MATCH START @@ -185,7 +190,8 @@ export const traverseAndMatch = ( fileNode, queryNode, searchSettings: settingsWithLogger, - matchContext, + // To not bind ref in case rest of match is incorrect + matchContext: createMatchContext(initialMatchContext), }) const foundMatchStart = levelMatch @@ -205,7 +211,12 @@ export const traverseAndMatch = ( ) const measureValidate = measureStart('validate') - const match = validateMatch(fileNode, queryNode, settings, matchContext) + const { match, matchContext: extendedMatchContext } = validateMatch( + fileNode, + queryNode, + settings, + localMatchContext, + ) measureValidate() if (match) { @@ -213,7 +224,7 @@ export const traverseAndMatch = ( getMatchFromNode( fileNode, parserSettings, - matchContext.getAllAliases(), + extendedMatchContext.getAllAliases(), ), ) } else { diff --git a/packages/core/src/searchStages/validateMatch.ts b/packages/core/src/searchStages/validateMatch.ts index eac2e58..db958fc 100644 --- a/packages/core/src/searchStages/validateMatch.ts +++ b/packages/core/src/searchStages/validateMatch.ts @@ -5,18 +5,19 @@ import { PoorNodeType, SearchSettings, SearchSettingsWithOptionalLogger, + ValidateMatchReturnType, } from '../types' import { getKeyFromObject, noopLogger } from '../utils' import { compareNodes } from './compareNodes' -import { Logger } from '../logger' -import { MatchContext } from '../matchContext' +import { MatchContext, createMatchContext } from '../matchContext' export const validateMatch = ( fileNode: PoorNodeType, queryNode: PoorNodeType, settings: SearchSettingsWithOptionalLogger & GetCodeForNode, matchContext: MatchContext, -) => { +): ValidateMatchReturnType => { + const localMatchContext = createMatchContext(matchContext.getAllAliases()) const settingsWithLogger: SearchSettings & GetCodeForNode = { ...settings, logger: settings.logger ?? noopLogger, @@ -43,7 +44,7 @@ export const validateMatch = ( fileNode: fileNode, queryNode: queryNode, searchSettings: settingsWithLogger, - matchContext, + matchContext: localMatchContext, }) if ( @@ -88,7 +89,7 @@ export const validateMatch = ( log('nodes incompat:\n\n', 'invalid code') } - return false + return { match: false, matchContext: localMatchContext } } else { if (queryKeysToTraverseForValidatingMatch.length > 0) { for (let i = 0; i < queryKeysToTraverseForValidatingMatch.length; i++) { @@ -118,95 +119,117 @@ export const validateMatch = ( if (isExact) { if (fileNodesArr.length !== queryNodesArr.length) { - return false + return { match: false, matchContext: localMatchContext } } for (let i = 0; i < fileNodesArr.length; i++) { const newCurrentNode = fileNodesArr[i] const newCurrentQueryNode = queryNodesArr[i] - if ( - !newCurrentNode || - !newCurrentQueryNode || - !validateMatch( - newCurrentNode, - newCurrentQueryNode, - settings, - matchContext, - ) - ) { - return false + if (!newCurrentNode || !newCurrentQueryNode) { + return { match: false, matchContext: localMatchContext } + } + + const validateMatchResult = validateMatch( + newCurrentNode, + newCurrentQueryNode, + settings, + localMatchContext, + ) + + if (!validateMatchResult.match) { + return { match: false, matchContext: localMatchContext } } + + localMatchContext.merge( + validateMatchResult.matchContext.getAllAliases(), + ) } } else { if (queryNodesArr.length > fileNodesArr.length) { log('validate: more query nodes than array nodes') - return false + return { match: false, matchContext: localMatchContext } } - const matchedIndexes: number[] = [] + if (mode === 'include') { + const matchedIndexes: number[] = [] - const queryNodesArrSorted = [...queryNodesArr].sort((a, b) => - sortByLeastIdentifierStrength( - a, - b, - parserSettings.wildcardUtils, - parserSettings.getIdentifierNodeName, - ), - ) + const queryNodesArrSorted = [...queryNodesArr].sort((a, b) => + sortByLeastIdentifierStrength( + a, + b, + parserSettings.wildcardUtils, + parserSettings.getIdentifierNodeName, + ), + ) - for (let i = 0; i < queryNodesArrSorted.length; i++) { - const newQueryNode = queryNodesArrSorted[i] + for (let i = 0; i < queryNodesArrSorted.length; i++) { + const newQueryNode = queryNodesArrSorted[i] - for (let j = 0; j < fileNodesArr.length; j++) { - const newFileNode = fileNodesArr[j] + for (let j = 0; j < fileNodesArr.length; j++) { + const newFileNode = fileNodesArr[j] - if (!matchedIndexes.includes(j)) { - if ( - validateMatch( + if (!matchedIndexes.includes(j)) { + const validateMatchResult = validateMatch( newFileNode, newQueryNode, settings, - matchContext, + localMatchContext, ) - ) { - matchedIndexes.push(j) - break + + if (validateMatchResult.match) { + matchedIndexes.push(j) + + localMatchContext.merge( + validateMatchResult.matchContext.getAllAliases(), + ) + + break + } } } + + if (matchedIndexes.length !== i + 1) { + return { match: false, matchContext: localMatchContext } + } } - if (matchedIndexes.length !== i + 1) { - return false + if (matchedIndexes.length !== queryNodesArr.length) { + return { match: false, matchContext: localMatchContext } } - } + } else { + // mode is include-with-order - if (mode === ('include-with-order' as Mode)) { - const propsFoundInOrder = matchedIndexes.every( - (val, idx, arr) => { - if (idx + 1 === arr.length) { - return true - } else { - return val < arr[idx + 1] - } - }, - ) + let queryNodeIndexToMatch = 0 - if ( - !propsFoundInOrder || - matchedIndexes.length !== queryNodesArr.length - ) { - return false + for (let j = 0; j < fileNodesArr.length; j++) { + const newFileNode = fileNodesArr[j] + const newQueryNode = queryNodesArr[queryNodeIndexToMatch] + + const validateMatchResult = validateMatch( + newFileNode, + newQueryNode, + settings, + localMatchContext, + ) + + if (validateMatchResult.match) { + queryNodeIndexToMatch++ + + localMatchContext.merge( + validateMatchResult.matchContext.getAllAliases(), + ) + } } - } else { - if (matchedIndexes.length !== queryNodesArr.length) { - return false + + if (queryNodeIndexToMatch !== queryNodesArr.length) { + return { match: false, matchContext: localMatchContext } } } - - log('validate: non boolean return result for comparing nodes array') } + + log('validate: non boolean return result for comparing nodes array') } else { log('validate: is Node') @@ -215,19 +238,36 @@ export const validateMatch = ( log('validate: newFileNode', newFileNode) log('validate: newQueryNode', newQueryNode) - if ( - !newFileNode || - !newQueryNode || - !validateMatch(newFileNode, newQueryNode, settings, matchContext) - ) { - return false + if (!newFileNode || !newQueryNode) { + return { match: false, matchContext: localMatchContext } + } + + const validateMatchResult = validateMatch( + newFileNode, + newQueryNode, + settings, + localMatchContext, + ) + + if (!validateMatchResult.match) { + return { match: false, matchContext: localMatchContext } } + + localMatchContext.merge( + validateMatchResult.matchContext.getAllAliases(), + ) } } - return true + return { + match: true, + matchContext: localMatchContext, + } } else { - return true + return { + match: true, + matchContext: localMatchContext, + } } } } diff --git a/packages/core/src/treeSitterUtils.ts b/packages/core/src/treeSitterUtils.ts index e3957f2..2a5e919 100644 --- a/packages/core/src/treeSitterUtils.ts +++ b/packages/core/src/treeSitterUtils.ts @@ -1,12 +1,25 @@ import type { SyntaxNode, Tree } from 'web-tree-sitter' +import Parser from 'web-tree-sitter' import { PoorNodeType, TreeSitterNodeFieldsMeta } from './types' -export function collectAstFromTree( - tree: Tree, - codeText: string, - defineRawValueForNodeTypes: string[], - nodeFieldsMeta: TreeSitterNodeFieldsMeta, -) { +export type PostProcessNodes = Record< + string, + (node: PoorNodeType, codeText: string) => PoorNodeType +> + +export function collectAstFromTree({ + tree, + codeText, + defineRawValueForNodeTypes, + nodeFieldsMeta, + postProcessNodes, +}: { + tree: Tree + codeText: string + defineRawValueForNodeTypes: string[] + nodeFieldsMeta: TreeSitterNodeFieldsMeta + postProcessNodes?: PostProcessNodes +}) { const getPosition = (node: SyntaxNode) => { const startPosition = node.startPosition const endPosition = node.endPosition @@ -143,6 +156,10 @@ export function collectAstFromTree( ) } + if (postProcessNodes?.[nodeType]) { + return postProcessNodes[nodeType](rawNode, codeText) + } + return rawNode } @@ -193,3 +210,86 @@ export const sanitizeFsPath = (fsPath: string) => { return fsPath.replace(/\\/g, '/') } + +const getDefaultBasePath = () => { + return typeof process?.cwd !== 'undefined' ? process.cwd() : '/' +} + +export const treeSitterParserModuleFactory = ({ + treeSitterParserName, + defineRawValueForNodeTypes, + postProcessNodes, +}: { + treeSitterParserName: string + defineRawValueForNodeTypes: string[] + postProcessNodes?: PostProcessNodes +}) => { + let parser: Parser | null = null + let parserInitError: Error | null = null + let fieldsMeta: TreeSitterNodeFieldsMeta | null = null + + const filePaths = getFilePaths(treeSitterParserName) + + const init = async (basePathOption?: string | undefined) => { + if (parser) { + return + } + + const basePath = basePathOption ?? getDefaultBasePath() + + return Parser.init({ + locateFile: () => + getTreeSitterWasmPath(basePath, filePaths.treeSitterWasm), + }) + .then(async () => { + fieldsMeta = await getFieldsMeta(basePath, filePaths.fieldsMeta) + const Python = await Parser.Language.load( + getTreeSitterWasmPath(basePath, filePaths.parserWasm), + ) + + const localParser = new Parser() + + localParser.setLanguage(Python) + parser = localParser + }) + .catch((error) => { + console.error('Parser init error', error) + parser = null + parserInitError = error + }) + } + + const parse = (code: string) => { + if (parserInitError !== null) { + throw parserInitError + } + + if (parser === null) { + throw new Error('Parser not ready') + } + + if (fieldsMeta === null) { + throw new Error("Couldn't load fields meta") + } + + if (parserInitError) { + throw parserInitError + } + + const tree = parser.parse(code, undefined) + + const ast = collectAstFromTree({ + tree, + codeText: code, + defineRawValueForNodeTypes, + nodeFieldsMeta: fieldsMeta, + postProcessNodes, + }) + + tree.delete() + + return ast ?? { nodeType: 'empty' } // this is to make TS happy, won't happen in real life. + } + + return { init, parse } +} diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 2b04700..87e3d22 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -5,6 +5,7 @@ export type Mode = 'exact' | 'include' | 'include-with-order' | 'text' export type Position = { line: number column: number + index?: number } export type Location = { @@ -76,6 +77,8 @@ export type ParserType = | 'angular-eslint-template-parser' | 'css-tree' | 'python' + | 'lua' + | 'csharp' export type FileSystemSearchArgs = { filePaths: string[] @@ -292,3 +295,8 @@ export type TreeSitterNodeFieldsMeta = Record< multipleOrChildrenFieldNames: string[] } > + +export type ValidateMatchReturnType = { + match: boolean + matchContext: MatchContext +} diff --git a/packages/core/tools/getAstJson/index.js b/packages/core/tools/getAstJson/index.js index 9564c9b..9cfcb1a 100644 --- a/packages/core/tools/getAstJson/index.js +++ b/packages/core/tools/getAstJson/index.js @@ -18,7 +18,7 @@ const parserName = userParser ?? defaultParser const parserSettings = __internal.parserSettingsMap[parserName]() const runtime = async () => { - await parserSettings?.parserInitPromise + await parserSettings?.init() print('Parser loaded') const filePathWithSourceCode = `${__dirname}/code.txt` diff --git a/packages/eslint/README.md b/packages/eslint/README.md index f06da48..cd5e365 100644 --- a/packages/eslint/README.md +++ b/packages/eslint/README.md @@ -1,3 +1,5 @@ + +

@@ -14,26 +16,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,23 +45,22 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
- + + ## ESLint integration 💅 Using CodeQue ESLint plugin you can create your own custom linting rules in zero time. @@ -79,6 +80,7 @@ yarn add --dev @codeque/eslint-plugin ``` CodeQue supports all parsers officially supported by ESLint + - [Espree](https://github.com/eslint/espree) - [Esprima](https://www.npmjs.com/package/esprima) - [@babel/eslint-parser](https://www.npmjs.com/package/@babel/eslint-parser) @@ -90,7 +92,8 @@ CodeQue supports all parsers officially supported by ESLint Add `@codeque` plugin to plugins list in your `.eslintrc`. -And then add a definition for one of the rules: +And then add a definition for one of the rules: + - `@codeque/error` - `@codeque/warning` @@ -104,25 +107,32 @@ Learn more about writing queries from [CodeQue docs](https://codeque.co/docs) { "plugins": ["@codeque"], "rules": { - "@codeque/error": ["error", [ - { - "query": "fetchData()", - "mode": "exact", - "message": "Using fetchData() without parameters causes app crash!", - }, - ]], - "@codeque/warning": ["warn", [ - { - "query": "import $$$ from 'lodash';", - "mode": "include", - "message": "Prefer to import lodash functions from separate packages like 'lodash.debounce'", - }, - ]] + "@codeque/error": [ + "error", + [ + { + "query": "fetchData()", + "mode": "exact", + "message": "Using fetchData() without parameters causes app crash!" + } + ] + ], + "@codeque/warning": [ + "warn", + [ + { + "query": "import $$$ from 'lodash';", + "mode": "include", + "message": "Prefer to import lodash functions from separate packages like 'lodash.debounce'" + } + ] + ] } } ``` The above configuration + - rises an error when `fetchData()` function is called without parameters - reports a warning when utility is imported from main `lodash` package @@ -130,7 +140,6 @@ The above configuration

- > If your config seems too big, feel free to extract your set of rules to a separate file. Change your `.eslintrc` to JS file and import rules from a separate file. ## Rule config object properties @@ -138,12 +147,13 @@ The above configuration Minimal rule config object should contain just `query` key ```js -({ - query: "someCode" +;({ + query: 'someCode', }) ``` The default settings are: + - `mode` - `include` - `message` - `Restricted code pattern` - `caseInsensitive` - `true` @@ -156,7 +166,7 @@ All configuration options type RuleConfig = { query: string // Content of the query mode: 'exact' | 'include' | 'include-with-order' // CodeQue search mode - message: string // Error message to display + message: string // Error message to display caseInsensitive: boolean // Whether query should perform matches case insensitively includeFiles: string[] | undefined // list of glob patterns to indicate files against which given rule should be executed excludeFiles: string[] // list of glob patterns to indicate files against which given rule should not be executed @@ -165,7 +175,7 @@ type RuleConfig = { ## Rule examples -CodeQue is general purpose code search tool. The examples list could be endless. Here are some of them for you to get a glimpse of what's possible. Those are relatively simple, you will definitely find some more complex during day to day work. +CodeQue is general purpose code search tool. The examples list could be endless. Here are some of them for you to get a glimpse of what's possible. Those are relatively simple, you will definitely find some more complex during day to day work. > Don't know how to write a query? [Open an issue on GitHub](https://github.com/codeque-co/codeque/issues) ! @@ -181,13 +191,16 @@ This rule warns about all places in the code that can output some (usually unwan ```json { "rules": { - "@codeque/warning": ["warn", [ - { - "query": "console.$$()", - "mode": "include", - "message": "Prefer to use 'Logger' util.", - }, - ]] + "@codeque/warning": [ + "warn", + [ + { + "query": "console.$$()", + "mode": "include", + "message": "Prefer to use 'Logger' util." + } + ] + ] } } ``` @@ -210,14 +223,17 @@ The rule warns against using `disabled` property on `SomeLibComponent`, and sugg ```json { "rules": { - "@codeque/warning": ["warn", [ - { - "query": "", - "mode": "include", - "message": "'disabled' property does not work as expected. Use 'isDisabled' instead", - "includeFiles": ["**/*.tsx"] - }, - ]] + "@codeque/warning": [ + "warn", + [ + { + "query": "", + "mode": "include", + "message": "'disabled' property does not work as expected. Use 'isDisabled' instead", + "includeFiles": ["**/*.tsx"] + } + ] + ] } } ``` @@ -242,20 +258,22 @@ This is interesting example that links together two statements in the same code ```json { "rules": { - "@codeque/error": ["error", [ - { - "query": "const { confirm } = useAsyncDialog(); const $$ = useCallback($$$, [confirm]);", - "mode": "include", - "message": "'confirm' is known to be unstable. Using it in hook dependency array can cause render loop", - }, - ]] + "@codeque/error": [ + "error", + [ + { + "query": "const { confirm } = useAsyncDialog(); const $$ = useCallback($$$, [confirm]);", + "mode": "include", + "message": "'confirm' is known to be unstable. Using it in hook dependency array can cause render loop" + } + ] + ] } } ``` -

@@ -266,34 +284,35 @@ First rule restricts usage of object literal as a prop. Object literal could be Second rule restricts places where a given array is mapped directly in JSX. It could be memoized to make the array reference stable and reduce re-renders. -
Show configuration ```json { "rules": { - "@codeque/error": ["error", [ - { - "query": "<$$ $$={{}} />", - "mode": "include", - "message": "Don't use object literal in JSX props", - "includeFiles": ["**/*.tsx"] - }, - { - "query": "<$$ $$={$$$.map(() => ($$$))} />", - "mode": "include", - "message": "Don't use map directly in JSX, memoize map result instead", - "includeFiles": ["**/*.tsx"] - }, - ]] + "@codeque/error": [ + "error", + [ + { + "query": "<$$ $$={{}} />", + "mode": "include", + "message": "Don't use object literal in JSX props", + "includeFiles": ["**/*.tsx"] + }, + { + "query": "<$$ $$={$$$.map(() => ($$$))} />", + "mode": "include", + "message": "Don't use map directly in JSX, memoize map result instead", + "includeFiles": ["**/*.tsx"] + } + ] + ] } } ```
-

@@ -306,9 +325,9 @@ CodeQue performs shallow matching based on strings in query, so it can filter ou Query that contains wildcards only, eg. `$$.$$()` will be looked for in every file, as query does not include any specific characters sequence. -However query `console.$$()` would match only on files that contains `console` string somewhere within it's contents. +However query `console.$$()` would match only on files that contains `console` string somewhere within it's contents. -Remember to be as specific as possible and use file filtering options eg. to not run JSX rules on `*.js` files. +Remember to be as specific as possible and use file filtering options eg. to not run JSX rules on `*.js` files. CodeQue will run faster for more specific patterns that occurs rarely in the codebase. If pattern is very common, it would have to do more comparisons, hence would run longer. @@ -331,7 +350,7 @@ Linting code pattern specific to your code base is what CodeQue eslint integrati Rule from examples section that captures issue with unstable hook reference occurs rare in the codebase, but can prevent various important bugs. ``` -const { confirm } = useAsyncDialog(); +const { confirm } = useAsyncDialog(); const $$ = useCallback($$$, [confirm]); ``` @@ -355,8 +374,7 @@ Rule | Time (ms) | Relative @codeque/warning | 28.286 | 100.0% ``` - -And for new introduction of the pattern while you code, it will be captures in ~30ms +And for new introduction of the pattern while you code, it will be captures in ~30ms ```sh ✖ 1 problems (0 errors, 1 warning) @@ -366,13 +384,13 @@ Rule | Time (ms) | Relative @codeque/warning | 30.553 | 100.0% ``` -It's not much comparing to the value it gives. +It's not much comparing to the value it gives. Consider how much time it would take to implement such rule with standard approach. No one has budget for that and instead time will be spend on fixing bugs. #### Capturing restricted imports -Here is the comparison of `no-restricted-imports` ESLint rule with CodeQue rule. +Here is the comparison of `no-restricted-imports` ESLint rule with CodeQue rule. Both restricts importing `useCallback` from `react`. @@ -393,7 +411,6 @@ Rule | Time (ms) | Relative no-restricted-imports | 30.239 | 43.9% ``` - #### Restricting console usage The performance result of ESLint `no-console` rule comparing to CodeQue `console.$$()` query on TypeScript codebase with ~4000 source files. @@ -409,7 +426,6 @@ Rule | Time (ms) | Relative no-console | 21.482 | 20.9% ``` - ## Telemetry Plugin collects completely anonymous telemetry that helps me get insights about usage. @@ -424,6 +440,7 @@ Learn more about [telemetry](https://codeque.co/docs/telemetry#es-lint-plugin) Feel free to use [Github Issues](https://github.com/codeque-co/codeque/issues) to + - ask for help with writing a query - report a bug or doubt -- suggest feature or improvement \ No newline at end of file +- suggest feature or improvement diff --git a/packages/eslint/package.json b/packages/eslint/package.json index a3cd42a..1a2bacc 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -1,6 +1,6 @@ { "name": "@codeque/eslint-plugin", - "version": "0.1.1", + "version": "0.1.2", "description": "Create custom ESLint rules based on code samples. Utilizing CodeQue - structural code search engine.", "author": "Jakub Mazurek (@jayu) ", "license": "Sustainable Use License", @@ -32,7 +32,7 @@ "ts-jest": "^27.1.1" }, "dependencies": { - "@codeque/core": "^0.5.0", + "@codeque/core": "^0.6.1", "applicationinsights": "^2.7.0", "is-ci": "^3.0.1", "node-machine-id": "^1.1.12" diff --git a/packages/eslint/src/lintCode.ts b/packages/eslint/src/lintCode.ts index 504aa3e..9cb4385 100644 --- a/packages/eslint/src/lintCode.ts +++ b/packages/eslint/src/lintCode.ts @@ -243,7 +243,7 @@ export const createLintCode = ( } const matchContext = __internal.createMatchContext() - const match = __internal.validateMatch( + const { match } = __internal.validateMatch( node, queryWithSettings.parsedQuery.queryNode, searchOptions, diff --git a/packages/tree-sitter-port/output/tree-sitter-c-sharp/fields-meta.json b/packages/tree-sitter-port/output/tree-sitter-c-sharp/fields-meta.json index f9af177..b9a5289 100644 --- a/packages/tree-sitter-port/output/tree-sitter-c-sharp/fields-meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-c-sharp/fields-meta.json @@ -41,61 +41,60 @@ "type": "anonymous_object_creation_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children", - "name_equals": "children" + "typeof_expression": "children", + "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -103,61 +102,61 @@ "type": "argument", "singleFieldNames": ["name"], "nodeTypeToMultipleFieldName": { + "declaration_expression": "children", + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children", - "declaration_expression": "children" + "typeof_expression": "children", + "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -181,59 +180,59 @@ "type": "array_rank_specifier", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -248,59 +247,59 @@ "type": "arrow_expression_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -313,15 +312,7 @@ }, "assignment_expression": { "type": "assignment_expression", - "singleFieldNames": ["left", "right"], - "nodeTypeToMultipleFieldName": { - "assignment_operator": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "assignment_operator": { - "type": "assignment_operator", - "singleFieldNames": [], + "singleFieldNames": ["left", "operator", "right"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, @@ -337,62 +328,60 @@ "type": "attribute_argument", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children", - "name_colon": "children", - "name_equals": "children" + "typeof_expression": "children", + "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -423,78 +412,73 @@ "type": "await_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "base_expression": { - "type": "base_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "base_list": { "type": "base_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "argument_list": "children", + "primary_constructor_base_type": "children", "alias_qualified_name": "children", "array_type": "children", "function_pointer_type": "children", "generic_name": "children", - "global": "children", "identifier": "children", "implicit_type": "children", "nullable_type": "children", @@ -503,8 +487,7 @@ "qualified_name": "children", "ref_type": "children", "scoped_type": "children", - "tuple_type": "children", - "primary_constructor_base_type": "children" + "tuple_type": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -526,14 +509,15 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", "local_declaration_statement": "children", "local_function_statement": "children", "lock_statement": "children", + "preproc_if": "children", "return_statement": "children", "switch_statement": "children", "throw_statement": "children", @@ -577,165 +561,92 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "case_pattern_switch_label": { - "type": "case_pattern_switch_label", + "calling_convention": { + "type": "calling_convention", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "and_pattern": "children", - "constant_pattern": "children", - "declaration_pattern": "children", - "discard": "children", - "list_pattern": "children", - "negated_pattern": "children", - "or_pattern": "children", - "parenthesized_pattern": "children", - "recursive_pattern": "children", - "relational_pattern": "children", - "type_pattern": "children", - "var_pattern": "children", - "when_clause": "children" + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "cast_expression": { + "type": "cast_expression", + "singleFieldNames": ["type", "value"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "catch_clause": { + "type": "catch_clause", + "singleFieldNames": ["body"], + "nodeTypeToMultipleFieldName": { + "catch_declaration": "children", + "catch_filter_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "case_switch_label": { - "type": "case_switch_label", + "catch_declaration": { + "type": "catch_declaration", + "singleFieldNames": ["name", "type"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "catch_filter_clause": { + "type": "catch_filter_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "postfix_unary_expression": "children", - "prefix_unary_expression": "children", - "query_expression": "children", - "range_expression": "children", "raw_string_literal": "children", "real_literal": "children", - "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", "string_literal": "children", - "switch_expression": "children", - "this_expression": "children", - "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", "verbatim_string_literal": "children", - "with_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "cast_expression": { - "type": "cast_expression", - "singleFieldNames": ["type", "value"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "catch_clause": { - "type": "catch_clause", - "singleFieldNames": ["body"], - "nodeTypeToMultipleFieldName": { - "catch_declaration": "children", - "catch_filter_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "catch_declaration": { - "type": "catch_declaration", - "singleFieldNames": ["name", "type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "catch_filter_clause": { - "type": "catch_filter_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "anonymous_method_expression": "children", - "anonymous_object_creation_expression": "children", - "array_creation_expression": "children", - "as_expression": "children", - "assignment_expression": "children", - "await_expression": "children", - "base_expression": "children", - "binary_expression": "children", - "boolean_literal": "children", - "cast_expression": "children", - "character_literal": "children", - "checked_expression": "children", - "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", - "implicit_array_creation_expression": "children", - "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", - "initializer_expression": "children", - "integer_literal": "children", - "interpolated_string_expression": "children", - "invocation_expression": "children", - "is_expression": "children", - "is_pattern_expression": "children", - "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", - "null_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -744,7 +655,7 @@ "type": "character_literal", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "character_literal_unescaped": "children", + "character_literal_content": "children", "escape_sequence": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -753,59 +664,59 @@ "type": "checked_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -820,11 +731,14 @@ }, "class_declaration": { "type": "class_declaration", - "singleFieldNames": ["bases", "body", "name", "type_parameters"], + "singleFieldNames": ["body", "name"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", + "base_list": "children", "modifier": "children", - "type_parameter_constraints_clause": "children" + "parameter_list": "children", + "type_parameter_constraints_clause": "children", + "type_parameter_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -832,17 +746,18 @@ "type": "compilation_unit", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "class_declaration": "children", - "delegate_declaration": "children", - "enum_declaration": "children", "extern_alias_directive": "children", "file_scoped_namespace_declaration": "children", - "global_attribute_list": "children", + "global_attribute": "children", "global_statement": "children", - "interface_declaration": "children", "namespace_declaration": "children", + "preproc_if": "children", + "shebang_directive": "children", + "class_declaration": "children", + "delegate_declaration": "children", + "enum_declaration": "children", + "interface_declaration": "children", "record_declaration": "children", - "record_struct_declaration": "children", "struct_declaration": "children", "using_directive": "children" }, @@ -868,28 +783,27 @@ "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "default_expression": "children", "generic_name": "children", - "global": "children", "identifier": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", - "parenthesized_expression": "children", - "postfix_unary_expression": "children", - "prefix_unary_expression": "children", "raw_string_literal": "children", "real_literal": "children", - "size_of_expression": "children", "string_literal": "children", + "verbatim_string_literal": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "postfix_unary_expression": "children", + "prefix_unary_expression": "children", + "sizeof_expression": "children", "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children" + "typeof_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -957,9 +871,9 @@ "method_declaration": "children", "namespace_declaration": "children", "operator_declaration": "children", + "preproc_if": "children", "property_declaration": "children", "record_declaration": "children", - "record_struct_declaration": "children", "struct_declaration": "children", "using_directive": "children" }, @@ -980,20 +894,6 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "default_switch_label": { - "type": "default_switch_label", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "define_directive": { - "type": "define_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "identifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "delegate_declaration": { "type": "delegate_declaration", "singleFieldNames": ["name", "parameters", "type", "type_parameters"], @@ -1014,88 +914,9 @@ }, "do_statement": { "type": "do_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "anonymous_method_expression": "children", - "anonymous_object_creation_expression": "children", - "array_creation_expression": "children", - "as_expression": "children", - "assignment_expression": "children", - "await_expression": "children", - "base_expression": "children", - "binary_expression": "children", - "boolean_literal": "children", - "cast_expression": "children", - "character_literal": "children", - "checked_expression": "children", - "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", - "implicit_array_creation_expression": "children", - "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", - "initializer_expression": "children", - "integer_literal": "children", - "interpolated_string_expression": "children", - "invocation_expression": "children", - "is_expression": "children", - "is_pattern_expression": "children", - "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", - "null_literal": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "postfix_unary_expression": "children", - "prefix_unary_expression": "children", - "query_expression": "children", - "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", - "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", - "switch_expression": "children", - "this_expression": "children", - "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children", - "block": "children", - "break_statement": "children", - "checked_statement": "children", - "continue_statement": "children", - "do_statement": "children", - "empty_statement": "children", - "expression_statement": "children", - "fixed_statement": "children", - "for_each_statement": "children", - "for_statement": "children", - "goto_statement": "children", - "if_statement": "children", - "labeled_statement": "children", - "local_declaration_statement": "children", - "local_function_statement": "children", - "lock_statement": "children", - "return_statement": "children", - "switch_statement": "children", - "throw_statement": "children", - "try_statement": "children", - "unsafe_statement": "children", - "using_statement": "children", - "while_statement": "children", - "yield_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] + "singleFieldNames": ["body", "condition"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] }, "element_access_expression": { "type": "element_access_expression", @@ -1107,49 +928,22 @@ "type": "element_binding_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "bracketed_argument_list": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "elif_directive": { - "type": "elif_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "binary_expression": "children", - "boolean_literal": "children", - "identifier": "children", - "integer_literal": "children", - "parenthesized_expression": "children", - "prefix_unary_expression": "children", - "verbatim_string_literal": "children" + "argument": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "else_directive": { - "type": "else_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "empty_statement": { "type": "empty_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "endregion_directive": { - "type": "endregion_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_message": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "enum_declaration": { "type": "enum_declaration", - "singleFieldNames": ["bases", "body", "name"], + "singleFieldNames": ["body", "name"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", + "base_list": "children", "modifier": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1166,91 +960,23 @@ "type": "enum_member_declaration_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "enum_member_declaration": "children" + "enum_member_declaration": "children", + "preproc_if": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "event_declaration": { + "type": "event_declaration", + "singleFieldNames": ["accessors", "name", "type"], + "nodeTypeToMultipleFieldName": { + "attribute_list": "children", + "explicit_interface_specifier": "children", + "modifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "equals_value_clause": { - "type": "equals_value_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "anonymous_method_expression": "children", - "anonymous_object_creation_expression": "children", - "array_creation_expression": "children", - "as_expression": "children", - "assignment_expression": "children", - "await_expression": "children", - "base_expression": "children", - "binary_expression": "children", - "boolean_literal": "children", - "cast_expression": "children", - "character_literal": "children", - "checked_expression": "children", - "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", - "implicit_array_creation_expression": "children", - "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", - "initializer_expression": "children", - "integer_literal": "children", - "interpolated_string_expression": "children", - "invocation_expression": "children", - "is_expression": "children", - "is_pattern_expression": "children", - "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", - "null_literal": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "postfix_unary_expression": "children", - "prefix_unary_expression": "children", - "query_expression": "children", - "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", - "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", - "switch_expression": "children", - "this_expression": "children", - "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "error_directive": { - "type": "error_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_message": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "event_declaration": { - "type": "event_declaration", - "singleFieldNames": ["accessors", "name", "type"], - "nodeTypeToMultipleFieldName": { - "attribute_list": "children", - "explicit_interface_specifier": "children", - "modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "event_field_declaration": { - "type": "event_field_declaration", + "event_field_declaration": { + "type": "event_field_declaration", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "attribute_list": "children", @@ -1261,68 +987,12 @@ }, "explicit_interface_specifier": { "type": "explicit_interface_specifier", - "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "expression_colon": { - "type": "expression_colon", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "anonymous_method_expression": "children", - "anonymous_object_creation_expression": "children", - "array_creation_expression": "children", - "as_expression": "children", - "assignment_expression": "children", - "await_expression": "children", - "base_expression": "children", - "binary_expression": "children", - "boolean_literal": "children", - "cast_expression": "children", - "character_literal": "children", - "checked_expression": "children", - "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", + "alias_qualified_name": "children", "generic_name": "children", - "global": "children", "identifier": "children", - "implicit_array_creation_expression": "children", - "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", - "initializer_expression": "children", - "integer_literal": "children", - "interpolated_string_expression": "children", - "invocation_expression": "children", - "is_expression": "children", - "is_pattern_expression": "children", - "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", - "null_literal": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "postfix_unary_expression": "children", - "prefix_unary_expression": "children", - "query_expression": "children", - "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", - "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", - "switch_expression": "children", - "this_expression": "children", - "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children" + "qualified_name": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -1359,18 +1029,8 @@ "file_scoped_namespace_declaration": { "type": "file_scoped_namespace_declaration", "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": { - "class_declaration": "children", - "delegate_declaration": "children", - "enum_declaration": "children", - "extern_alias_directive": "children", - "interface_declaration": "children", - "record_declaration": "children", - "record_struct_declaration": "children", - "struct_declaration": "children", - "using_directive": "children" - }, - "multipleOrChildrenFieldNames": ["children"] + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] }, "finally_clause": { "type": "finally_clause", @@ -1392,14 +1052,15 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", "local_declaration_statement": "children", "local_function_statement": "children", "lock_statement": "children", + "preproc_if": "children", "return_statement": "children", "switch_statement": "children", "throw_statement": "children", @@ -1412,185 +1073,162 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "for_each_statement": { - "type": "for_each_statement", - "singleFieldNames": ["body", "left", "right", "type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "for_statement": { "type": "for_statement", "singleFieldNames": ["body", "condition"], "nodeTypeToMultipleFieldName": { ",": "update", + "element_access_expression": "update", + "element_binding_expression": "update", + "generic_name": "update", + "identifier": "update", + "member_access_expression": "update", + "parenthesized_expression": "update", + "prefix_unary_expression": "update", + "this": "update", + "tuple_expression": "update", "anonymous_method_expression": "update", "anonymous_object_creation_expression": "update", "array_creation_expression": "update", "as_expression": "update", "assignment_expression": "update", "await_expression": "update", - "base_expression": "update", + "base": "update", "binary_expression": "update", - "boolean_literal": "update", "cast_expression": "update", - "character_literal": "update", "checked_expression": "update", "conditional_access_expression": "update", "conditional_expression": "update", "default_expression": "update", - "element_access_expression": "update", - "element_binding_expression": "update", - "generic_name": "update", - "global": "update", - "identifier": "update", "implicit_array_creation_expression": "update", "implicit_object_creation_expression": "update", - "implicit_stack_alloc_array_creation_expression": "update", + "implicit_stackalloc_expression": "update", "initializer_expression": "update", - "integer_literal": "update", "interpolated_string_expression": "update", "invocation_expression": "update", "is_expression": "update", "is_pattern_expression": "update", "lambda_expression": "update", - "make_ref_expression": "update", - "member_access_expression": "update", + "boolean_literal": "update", + "character_literal": "update", + "integer_literal": "update", "null_literal": "update", + "raw_string_literal": "update", + "real_literal": "update", + "string_literal": "update", + "verbatim_string_literal": "update", + "makeref_expression": "update", "object_creation_expression": "update", - "parenthesized_expression": "update", "postfix_unary_expression": "update", - "prefix_unary_expression": "update", + "preproc_if": "update", "query_expression": "update", "range_expression": "update", - "raw_string_literal": "update", - "real_literal": "update", "ref_expression": "update", - "ref_type_expression": "update", - "ref_value_expression": "update", - "size_of_expression": "update", - "stack_alloc_array_creation_expression": "update", - "string_literal": "update", + "reftype_expression": "update", + "refvalue_expression": "update", + "sizeof_expression": "update", + "stackalloc_expression": "update", "switch_expression": "update", - "this_expression": "update", "throw_expression": "update", - "tuple_expression": "update", - "type_of_expression": "update", - "verbatim_string_literal": "update", + "typeof_expression": "update", "with_expression": "update", "variable_declaration": "initializer" }, "multipleOrChildrenFieldNames": ["initializer", "update"] }, + "foreach_statement": { + "type": "foreach_statement", + "singleFieldNames": ["body", "left", "right", "type"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "from_clause": { "type": "from_clause", "singleFieldNames": ["name", "type"], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "function_pointer_calling_convention": { - "type": "function_pointer_calling_convention", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "function_pointer_unmanaged_calling_convention_list": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "function_pointer_parameter": { "type": "function_pointer_parameter", "singleFieldNames": ["type"], - "nodeTypeToMultipleFieldName": { - "parameter_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] }, "function_pointer_type": { "type": "function_pointer_type", - "singleFieldNames": [], + "singleFieldNames": ["returns"], "nodeTypeToMultipleFieldName": { - "function_pointer_calling_convention": "children", + "calling_convention": "children", "function_pointer_parameter": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "function_pointer_unmanaged_calling_convention": { - "type": "function_pointer_unmanaged_calling_convention", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "identifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "function_pointer_unmanaged_calling_convention_list": { - "type": "function_pointer_unmanaged_calling_convention_list", + "generic_name": { + "type": "generic_name", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "function_pointer_unmanaged_calling_convention": "children" + "identifier": "children", + "type_argument_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "generic_name": { - "type": "generic_name", - "singleFieldNames": ["name", "type_arguments"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "global_attribute_list": { - "type": "global_attribute_list", + "global_attribute": { + "type": "global_attribute", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "attribute": "children" @@ -1609,14 +1247,15 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", "local_declaration_statement": "children", "local_function_statement": "children", "lock_statement": "children", + "preproc_if": "children", "return_statement": "children", "switch_statement": "children", "throw_statement": "children", @@ -1632,59 +1271,59 @@ "type": "goto_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1693,59 +1332,59 @@ "type": "group_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", - "null_literal": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1756,20 +1395,6 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "if_directive": { - "type": "if_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "binary_expression": "children", - "boolean_literal": "children", - "identifier": "children", - "integer_literal": "children", - "parenthesized_expression": "children", - "prefix_unary_expression": "children", - "verbatim_string_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "if_statement": { "type": "if_statement", "singleFieldNames": ["alternative", "condition", "consequence"], @@ -1793,16 +1418,14 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "implicit_parameter_list": { - "type": "implicit_parameter_list", + "implicit_parameter": { + "type": "implicit_parameter", "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "parameter": "children" - }, - "multipleOrChildrenFieldNames": ["children"] + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] }, - "implicit_stack_alloc_array_creation_expression": { - "type": "implicit_stack_alloc_array_creation_expression", + "implicit_stackalloc_expression": { + "type": "implicit_stackalloc_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "initializer_expression": "children" @@ -1829,163 +1452,146 @@ "type": "initializer_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "interface_declaration": { "type": "interface_declaration", - "singleFieldNames": ["bases", "body", "name", "type_parameters"], + "singleFieldNames": ["body", "name", "type_parameters"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", + "base_list": "children", "modifier": "children", "type_parameter_constraints_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "interpolated_raw_string_text": { - "type": "interpolated_raw_string_text", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "interpolated_string_expression": { "type": "interpolated_string_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "interpolated_raw_string_text": "children", - "interpolated_string_text": "children", - "interpolated_verbatim_string_text": "children", - "interpolation": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "interpolated_string_text": { - "type": "interpolated_string_text", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "escape_sequence": "children" + "escape_sequence": "children", + "interpolation": "children", + "interpolation_quote": "children", + "interpolation_start": "children", + "string_content": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "interpolated_verbatim_string_text": { - "type": "interpolated_verbatim_string_text", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "interpolation": { "type": "interpolation", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", "interpolation_alignment_clause": "children", + "interpolation_brace": "children", "interpolation_format_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1994,59 +1600,59 @@ "type": "interpolation_alignment_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -2077,61 +1683,61 @@ }, "join_clause": { "type": "join_clause", - "singleFieldNames": ["name", "type"], + "singleFieldNames": ["type"], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", "join_into_clause": "children" }, @@ -2149,6 +1755,7 @@ "type": "labeled_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "identifier": "children", "block": "children", "break_statement": "children", "checked_statement": "children", @@ -2157,14 +1764,15 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", "local_declaration_statement": "children", "local_function_statement": "children", "lock_statement": "children", + "preproc_if": "children", "return_statement": "children", "switch_statement": "children", "throw_statement": "children", @@ -2172,8 +1780,7 @@ "unsafe_statement": "children", "using_statement": "children", "while_statement": "children", - "yield_statement": "children", - "identifier": "children" + "yield_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -2190,72 +1797,63 @@ "type": "let_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "line_directive": { - "type": "line_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_integer_literal": "children", - "preproc_string_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "list_pattern": { "type": "list_pattern", "singleFieldNames": [], @@ -2270,20 +1868,11 @@ "parenthesized_pattern": "children", "recursive_pattern": "children", "relational_pattern": "children", - "slice_pattern": "children", "type_pattern": "children", "var_pattern": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "load_directive": { - "type": "load_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_string_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "local_declaration_statement": { "type": "local_declaration_statement", "singleFieldNames": [], @@ -2313,59 +1902,59 @@ "type": "lock_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", "block": "children", "break_statement": "children", @@ -2375,8 +1964,8 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", @@ -2394,63 +1983,63 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "make_ref_expression": { - "type": "make_ref_expression", + "makeref_expression": { + "type": "makeref_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -2473,7 +2062,7 @@ "body", "name", "parameters", - "type", + "returns", "type_parameters" ], "nodeTypeToMultipleFieldName": { @@ -2490,21 +2079,6 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "name_colon": { - "type": "name_colon", - "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "name_equals": { - "type": "name_equals", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "global": "children", - "identifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "namespace_declaration": { "type": "namespace_declaration", "singleFieldNames": ["body", "name"], @@ -2530,12 +2104,6 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "nullable_directive": { - "type": "nullable_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "nullable_type": { "type": "nullable_type", "singleFieldNames": ["type"], @@ -2568,59 +2136,59 @@ "type": "order_by_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -2630,8 +2198,61 @@ "singleFieldNames": ["name", "type"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", - "equals_value_clause": "children", - "parameter_modifier": "children" + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "preproc_if": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", + "modifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -2651,60 +2272,61 @@ "type": "parenthesized_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children" + "typeof_expression": "children", + "with_expression": "children", + "unary_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -2755,286 +2377,634 @@ "type": "postfix_unary_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "pragma_directive": { - "type": "pragma_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "identifier": "children", - "integer_literal": "children", - "preproc_string_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "prefix_unary_expression": { "type": "prefix_unary_expression", - "singleFieldNames": ["argument", "operator"], + "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "primary_constructor_base_type": { - "type": "primary_constructor_base_type", - "singleFieldNames": ["type"], - "nodeTypeToMultipleFieldName": { - "argument_list": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_declaration": { - "type": "property_declaration", - "singleFieldNames": ["accessors", "name", "type", "value"], - "nodeTypeToMultipleFieldName": { - "attribute_list": "children", - "explicit_interface_specifier": "children", - "modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_pattern_clause": { - "type": "property_pattern_clause", + "preproc_define": { + "type": "preproc_define", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "subpattern": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "qualified_name": { - "type": "qualified_name", - "singleFieldNames": ["name", "qualifier"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "query_continuation": { - "type": "query_continuation", - "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": { - "from_clause": "children", - "group_clause": "children", - "join_clause": "children", - "let_clause": "children", - "order_by_clause": "children", - "query_continuation": "children", - "select_clause": "children", - "where_clause": "children" + "preproc_arg": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "query_expression": { - "type": "query_expression", - "singleFieldNames": [], + "preproc_elif": { + "type": "preproc_elif", + "singleFieldNames": ["alternative", "condition"], "nodeTypeToMultipleFieldName": { - "from_clause": "children", - "group_clause": "children", - "join_clause": "children", - "let_clause": "children", - "order_by_clause": "children", - "query_continuation": "children", - "select_clause": "children", - "where_clause": "children" + "class_declaration": "children", + "constructor_declaration": "children", + "conversion_operator_declaration": "children", + "delegate_declaration": "children", + "destructor_declaration": "children", + "enum_declaration": "children", + "event_declaration": "children", + "event_field_declaration": "children", + "field_declaration": "children", + "indexer_declaration": "children", + "interface_declaration": "children", + "method_declaration": "children", + "namespace_declaration": "children", + "operator_declaration": "children", + "preproc_if": "children", + "property_declaration": "children", + "record_declaration": "children", + "struct_declaration": "children", + "using_directive": "children", + "enum_member_declaration": "children", + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", + "extern_alias_directive": "children", + "file_scoped_namespace_declaration": "children", + "global_attribute": "children", + "block": "children", + "break_statement": "children", + "checked_statement": "children", + "continue_statement": "children", + "do_statement": "children", + "empty_statement": "children", + "expression_statement": "children", + "fixed_statement": "children", + "for_statement": "children", + "foreach_statement": "children", + "goto_statement": "children", + "if_statement": "children", + "labeled_statement": "children", + "local_declaration_statement": "children", + "local_function_statement": "children", + "lock_statement": "children", + "return_statement": "children", + "switch_statement": "children", + "throw_statement": "children", + "try_statement": "children", + "unsafe_statement": "children", + "using_statement": "children", + "while_statement": "children", + "yield_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "range_expression": { - "type": "range_expression", + "preproc_else": { + "type": "preproc_else", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "class_declaration": "children", + "constructor_declaration": "children", + "conversion_operator_declaration": "children", + "delegate_declaration": "children", + "destructor_declaration": "children", + "enum_declaration": "children", + "event_declaration": "children", + "event_field_declaration": "children", + "field_declaration": "children", + "indexer_declaration": "children", + "interface_declaration": "children", + "method_declaration": "children", + "namespace_declaration": "children", + "operator_declaration": "children", + "preproc_if": "children", + "property_declaration": "children", + "record_declaration": "children", + "struct_declaration": "children", + "using_directive": "children", + "enum_member_declaration": "children", + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", + "extern_alias_directive": "children", + "file_scoped_namespace_declaration": "children", + "global_attribute": "children", + "block": "children", + "break_statement": "children", + "checked_statement": "children", + "continue_statement": "children", + "do_statement": "children", + "empty_statement": "children", + "expression_statement": "children", + "fixed_statement": "children", + "for_statement": "children", + "foreach_statement": "children", + "goto_statement": "children", + "if_statement": "children", + "labeled_statement": "children", + "local_declaration_statement": "children", + "local_function_statement": "children", + "lock_statement": "children", + "return_statement": "children", + "switch_statement": "children", + "throw_statement": "children", + "try_statement": "children", + "unsafe_statement": "children", + "using_statement": "children", + "while_statement": "children", + "yield_statement": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_endregion": { + "type": "preproc_endregion", + "singleFieldNames": ["content"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "preproc_error": { + "type": "preproc_error", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "preproc_arg": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_if": { + "type": "preproc_if", + "singleFieldNames": ["alternative", "condition"], + "nodeTypeToMultipleFieldName": { + "class_declaration": "children", + "constructor_declaration": "children", + "conversion_operator_declaration": "children", + "delegate_declaration": "children", + "destructor_declaration": "children", + "enum_declaration": "children", + "event_declaration": "children", + "event_field_declaration": "children", + "field_declaration": "children", + "indexer_declaration": "children", + "interface_declaration": "children", + "method_declaration": "children", + "namespace_declaration": "children", + "operator_declaration": "children", + "preproc_if": "children", + "property_declaration": "children", + "record_declaration": "children", + "struct_declaration": "children", + "using_directive": "children", + "enum_member_declaration": "children", "element_access_expression": "children", "element_binding_expression": "children", "generic_name": "children", - "global": "children", "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", + "extern_alias_directive": "children", + "file_scoped_namespace_declaration": "children", + "global_attribute": "children", + "block": "children", + "break_statement": "children", + "checked_statement": "children", + "continue_statement": "children", + "do_statement": "children", + "empty_statement": "children", + "expression_statement": "children", + "fixed_statement": "children", + "for_statement": "children", + "foreach_statement": "children", + "goto_statement": "children", + "if_statement": "children", + "labeled_statement": "children", + "local_declaration_statement": "children", + "local_function_statement": "children", + "lock_statement": "children", + "return_statement": "children", + "switch_statement": "children", + "throw_statement": "children", + "try_statement": "children", + "unsafe_statement": "children", + "using_statement": "children", + "while_statement": "children", + "yield_statement": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_line": { + "type": "preproc_line", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "integer_literal": "children", + "string_literal": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_nullable": { + "type": "preproc_nullable", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "preproc_pragma": { + "type": "preproc_pragma", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children", + "integer_literal": "children", + "string_literal": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_region": { + "type": "preproc_region", + "singleFieldNames": ["content"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "preproc_undef": { + "type": "preproc_undef", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "preproc_arg": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "primary_constructor_base_type": { + "type": "primary_constructor_base_type", + "singleFieldNames": ["type"], + "nodeTypeToMultipleFieldName": { + "argument_list": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "property_declaration": { + "type": "property_declaration", + "singleFieldNames": ["accessors", "name", "type", "value"], + "nodeTypeToMultipleFieldName": { + "attribute_list": "children", + "explicit_interface_specifier": "children", + "modifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "property_pattern_clause": { + "type": "property_pattern_clause", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "subpattern": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "qualified_name": { + "type": "qualified_name", + "singleFieldNames": ["name", "qualifier"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "query_expression": { + "type": "query_expression", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "from_clause": "children", + "group_clause": "children", + "identifier": "children", + "join_clause": "children", + "let_clause": "children", + "order_by_clause": "children", + "select_clause": "children", + "where_clause": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "range_expression": { + "type": "range_expression", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", "tuple_expression": "children", - "type_of_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "preproc_if": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "record_declaration": { - "type": "record_declaration", - "singleFieldNames": [ - "bases", - "body", - "name", - "parameters", - "type_parameters" - ], + "raw_string_literal": { + "type": "raw_string_literal", + "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "attribute_list": "children", - "modifier": "children", - "type_parameter_constraints_clause": "children" + "raw_string_content": "children", + "raw_string_end": "children", + "raw_string_start": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "record_struct_declaration": { - "type": "record_struct_declaration", - "singleFieldNames": [ - "bases", - "body", - "name", - "parameters", - "type_parameters" - ], + "record_declaration": { + "type": "record_declaration", + "singleFieldNames": ["body", "name"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", + "base_list": "children", "modifier": "children", - "type_parameter_constraints_clause": "children" + "parameter_list": "children", + "type_parameter_constraints_clause": "children", + "type_parameter_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -3053,59 +3023,59 @@ "type": "ref_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -3116,146 +3086,130 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "ref_type_expression": { - "type": "ref_type_expression", + "reftype_expression": { + "type": "reftype_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "ref_value_expression": { - "type": "ref_value_expression", + "refvalue_expression": { + "type": "refvalue_expression", "singleFieldNames": ["type", "value"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "reference_directive": { - "type": "reference_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_string_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "region_directive": { - "type": "region_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_message": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "relational_pattern": { "type": "relational_pattern", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -3264,59 +3218,59 @@ "type": "return_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -3331,144 +3285,71 @@ "type": "select_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "anonymous_method_expression": "children", - "anonymous_object_creation_expression": "children", - "array_creation_expression": "children", - "as_expression": "children", - "assignment_expression": "children", - "await_expression": "children", - "base_expression": "children", - "binary_expression": "children", - "boolean_literal": "children", - "cast_expression": "children", - "character_literal": "children", - "checked_expression": "children", - "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", "element_access_expression": "children", "element_binding_expression": "children", "generic_name": "children", - "global": "children", "identifier": "children", - "implicit_array_creation_expression": "children", - "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", - "initializer_expression": "children", - "integer_literal": "children", - "interpolated_string_expression": "children", - "invocation_expression": "children", - "is_expression": "children", - "is_pattern_expression": "children", - "lambda_expression": "children", - "make_ref_expression": "children", "member_access_expression": "children", - "null_literal": "children", - "object_creation_expression": "children", "parenthesized_expression": "children", - "postfix_unary_expression": "children", "prefix_unary_expression": "children", - "query_expression": "children", - "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", - "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", - "switch_expression": "children", - "this_expression": "children", - "throw_expression": "children", + "this": "children", "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "shebang_directive": { - "type": "shebang_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "simple_assignment_expression": { - "type": "simple_assignment_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "size_of_expression": { - "type": "size_of_expression", + "sizeof_expression": { + "type": "sizeof_expression", "singleFieldNames": ["type"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "slice_pattern": { - "type": "slice_pattern", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "stack_alloc_array_creation_expression": { - "type": "stack_alloc_array_creation_expression", + "stackalloc_expression": { + "type": "stackalloc_expression", "singleFieldNames": ["type"], "nodeTypeToMultipleFieldName": { "initializer_expression": "children" @@ -3480,18 +3361,27 @@ "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "escape_sequence": "children", - "string_literal_encoding": "children", - "string_literal_fragment": "children" + "string_literal_content": "children", + "string_literal_encoding": "children" }, "multipleOrChildrenFieldNames": ["children"] }, + "string_literal_content": { + "type": "string_literal_content", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "struct_declaration": { "type": "struct_declaration", - "singleFieldNames": ["bases", "body", "name", "type_parameters"], + "singleFieldNames": ["body", "name"], "nodeTypeToMultipleFieldName": { "attribute_list": "children", + "base_list": "children", "modifier": "children", - "type_parameter_constraints_clause": "children" + "parameter_list": "children", + "type_parameter_constraints_clause": "children", + "type_parameter_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -3499,11 +3389,64 @@ "type": "subpattern", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "preproc_if": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", "and_pattern": "children", "constant_pattern": "children", "declaration_pattern": "children", "discard": "children", - "expression_colon": "children", "list_pattern": "children", "negated_pattern": "children", "or_pattern": "children", @@ -3527,121 +3470,195 @@ "type": "switch_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "preproc_if": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", + "switch_expression_arm": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "switch_expression_arm": { + "type": "switch_expression_arm", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { "element_access_expression": "children", "element_binding_expression": "children", "generic_name": "children", - "global": "children", "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", - "switch_expression_arm": "children" + "and_pattern": "children", + "constant_pattern": "children", + "declaration_pattern": "children", + "discard": "children", + "list_pattern": "children", + "negated_pattern": "children", + "or_pattern": "children", + "parenthesized_pattern": "children", + "recursive_pattern": "children", + "relational_pattern": "children", + "type_pattern": "children", + "var_pattern": "children", + "when_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "switch_expression_arm": { - "type": "switch_expression_arm", + "switch_section": { + "type": "switch_section", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", "and_pattern": "children", "constant_pattern": "children", @@ -3655,14 +3672,6 @@ "relational_pattern": "children", "type_pattern": "children", "var_pattern": "children", - "when_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "switch_section": { - "type": "switch_section", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { "block": "children", "break_statement": "children", "checked_statement": "children", @@ -3671,8 +3680,8 @@ "empty_statement": "children", "expression_statement": "children", "fixed_statement": "children", - "for_each_statement": "children", "for_statement": "children", + "foreach_statement": "children", "goto_statement": "children", "if_statement": "children", "labeled_statement": "children", @@ -3687,9 +3696,7 @@ "using_statement": "children", "while_statement": "children", "yield_statement": "children", - "case_pattern_switch_label": "children", - "case_switch_label": "children", - "default_switch_label": "children" + "when_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -3699,69 +3706,63 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "this_expression": { - "type": "this_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "throw_expression": { "type": "throw_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -3770,59 +3771,59 @@ "type": "throw_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -3876,7 +3877,6 @@ "array_type": "children", "function_pointer_type": "children", "generic_name": "children", - "global": "children", "identifier": "children", "implicit_type": "children", "nullable_type": "children", @@ -3889,18 +3889,6 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "type_constraint": { - "type": "type_constraint", - "singleFieldNames": ["type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "type_of_expression": { - "type": "type_of_expression", - "singleFieldNames": ["type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "type_parameter": { "type": "type_parameter", "singleFieldNames": ["name"], @@ -3911,21 +3899,20 @@ }, "type_parameter_constraint": { "type": "type_parameter_constraint", - "singleFieldNames": [], + "singleFieldNames": ["type"], "nodeTypeToMultipleFieldName": { - "constructor_constraint": "children", - "type_constraint": "children" + "constructor_constraint": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "type_parameter_constraints_clause": { "type": "type_parameter_constraints_clause", - "singleFieldNames": ["target"], + "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - ",": "constraints", - "type_parameter_constraint": "constraints" + "identifier": "children", + "type_parameter_constraint": "children" }, - "multipleOrChildrenFieldNames": ["constraints"] + "multipleOrChildrenFieldNames": ["children"] }, "type_parameter_list": { "type": "type_parameter_list", @@ -3941,13 +3928,17 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "undef_directive": { - "type": "undef_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "identifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] + "typeof_expression": { + "type": "typeof_expression", + "singleFieldNames": ["type"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "unary_expression": { + "type": "unary_expression", + "singleFieldNames": ["argument", "operator"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] }, "unsafe_statement": { "type": "unsafe_statement", @@ -3959,67 +3950,81 @@ }, "using_directive": { "type": "using_directive", - "singleFieldNames": ["alias", "name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] + "singleFieldNames": ["name"], + "nodeTypeToMultipleFieldName": { + "alias_qualified_name": "children", + "array_type": "children", + "function_pointer_type": "children", + "generic_name": "children", + "identifier": "children", + "implicit_type": "children", + "nullable_type": "children", + "pointer_type": "children", + "predefined_type": "children", + "qualified_name": "children", + "ref_type": "children", + "scoped_type": "children", + "tuple_type": "children" + }, + "multipleOrChildrenFieldNames": ["children"] }, "using_statement": { "type": "using_statement", "singleFieldNames": ["body"], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", "variable_declaration": "children" }, @@ -4047,76 +4052,121 @@ "singleFieldNames": ["name"], "nodeTypeToMultipleFieldName": { "bracketed_argument_list": "children", - "equals_value_clause": "children", + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", + "anonymous_method_expression": "children", + "anonymous_object_creation_expression": "children", + "array_creation_expression": "children", + "as_expression": "children", + "assignment_expression": "children", + "await_expression": "children", + "base": "children", + "binary_expression": "children", + "cast_expression": "children", + "checked_expression": "children", + "conditional_access_expression": "children", + "conditional_expression": "children", + "default_expression": "children", + "implicit_array_creation_expression": "children", + "implicit_object_creation_expression": "children", + "implicit_stackalloc_expression": "children", + "initializer_expression": "children", + "interpolated_string_expression": "children", + "invocation_expression": "children", + "is_expression": "children", + "is_pattern_expression": "children", + "lambda_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", + "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", + "object_creation_expression": "children", + "postfix_unary_expression": "children", + "preproc_if": "children", + "query_expression": "children", + "range_expression": "children", + "ref_expression": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", + "switch_expression": "children", + "throw_expression": "children", + "typeof_expression": "children", + "with_expression": "children", "tuple_pattern": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "warning_directive": { - "type": "warning_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "preproc_message": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, "when_clause": { "type": "when_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", - "conditional_expression": "children", - "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", + "conditional_expression": "children", + "default_expression": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -4125,215 +4175,189 @@ "type": "where_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "while_statement": { "type": "while_statement", + "singleFieldNames": ["body", "condition"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "with_expression": { + "type": "with_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children", - "block": "children", - "break_statement": "children", - "checked_statement": "children", - "continue_statement": "children", - "do_statement": "children", - "empty_statement": "children", - "expression_statement": "children", - "fixed_statement": "children", - "for_each_statement": "children", - "for_statement": "children", - "goto_statement": "children", - "if_statement": "children", - "labeled_statement": "children", - "local_declaration_statement": "children", - "local_function_statement": "children", - "lock_statement": "children", - "return_statement": "children", - "switch_statement": "children", - "throw_statement": "children", - "try_statement": "children", - "unsafe_statement": "children", - "using_statement": "children", - "while_statement": "children", - "yield_statement": "children" + "with_initializer": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "with_expression": { - "type": "with_expression", + "with_initializer": { + "type": "with_initializer", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", - "with_expression": "children", - "with_initializer_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "with_initializer_expression": { - "type": "with_initializer_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "simple_assignment_expression": "children" + "typeof_expression": "children", + "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -4341,59 +4365,59 @@ "type": "yield_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "element_access_expression": "children", + "element_binding_expression": "children", + "generic_name": "children", + "identifier": "children", + "member_access_expression": "children", + "parenthesized_expression": "children", + "prefix_unary_expression": "children", + "this": "children", + "tuple_expression": "children", "anonymous_method_expression": "children", "anonymous_object_creation_expression": "children", "array_creation_expression": "children", "as_expression": "children", "assignment_expression": "children", "await_expression": "children", - "base_expression": "children", + "base": "children", "binary_expression": "children", - "boolean_literal": "children", "cast_expression": "children", - "character_literal": "children", "checked_expression": "children", "conditional_access_expression": "children", "conditional_expression": "children", "default_expression": "children", - "element_access_expression": "children", - "element_binding_expression": "children", - "generic_name": "children", - "global": "children", - "identifier": "children", "implicit_array_creation_expression": "children", "implicit_object_creation_expression": "children", - "implicit_stack_alloc_array_creation_expression": "children", + "implicit_stackalloc_expression": "children", "initializer_expression": "children", - "integer_literal": "children", "interpolated_string_expression": "children", "invocation_expression": "children", "is_expression": "children", "is_pattern_expression": "children", "lambda_expression": "children", - "make_ref_expression": "children", - "member_access_expression": "children", + "boolean_literal": "children", + "character_literal": "children", + "integer_literal": "children", "null_literal": "children", + "raw_string_literal": "children", + "real_literal": "children", + "string_literal": "children", + "verbatim_string_literal": "children", + "makeref_expression": "children", "object_creation_expression": "children", - "parenthesized_expression": "children", "postfix_unary_expression": "children", - "prefix_unary_expression": "children", + "preproc_if": "children", "query_expression": "children", "range_expression": "children", - "raw_string_literal": "children", - "real_literal": "children", "ref_expression": "children", - "ref_type_expression": "children", - "ref_value_expression": "children", - "size_of_expression": "children", - "stack_alloc_array_creation_expression": "children", - "string_literal": "children", + "reftype_expression": "children", + "refvalue_expression": "children", + "sizeof_expression": "children", + "stackalloc_expression": "children", "switch_expression": "children", - "this_expression": "children", "throw_expression": "children", - "tuple_expression": "children", - "type_of_expression": "children", - "verbatim_string_literal": "children", + "typeof_expression": "children", "with_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -4416,6 +4440,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "%=": { + "type": "%=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "&": { "type": "&", "singleFieldNames": [], @@ -4428,12 +4458,24 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "&=": { + "type": "&=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "*": { "type": "*", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "*=": { + "type": "*=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "+": { "type": "+", "singleFieldNames": [], @@ -4446,6 +4488,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "+=": { + "type": "+=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "-": { "type": "-", "singleFieldNames": [], @@ -4458,14 +4506,20 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "-=": { + "type": "-=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "/": { "type": "/", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - ";": { - "type": ";", + "/=": { + "type": "/=", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -4482,12 +4536,24 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "<<=": { + "type": "<<=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "<=": { "type": "<=", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "=": { + "type": "=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "==": { "type": "==", "singleFieldNames": [], @@ -4512,24 +4578,48 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + ">>=": { + "type": ">>=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, ">>>": { "type": ">>>", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + ">>>=": { + "type": ">>>=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "??": { "type": "??", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "??=": { + "type": "??=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "^": { "type": "^", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "^=": { + "type": "^=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "add": { "type": "add", "singleFieldNames": [], @@ -4548,8 +4638,8 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "character_literal_unescaped": { - "type": "character_literal_unescaped", + "character_literal_content": { + "type": "character_literal_content", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -4566,12 +4656,6 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "endif_directive": { - "type": "endif_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "escape_sequence": { "type": "escape_sequence", "singleFieldNames": [], @@ -4602,6 +4686,24 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "interpolation_brace": { + "type": "interpolation_brace", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "interpolation_quote": { + "type": "interpolation_quote", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "interpolation_start": { + "type": "interpolation_start", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "is": { "type": "is", "singleFieldNames": [], @@ -4620,38 +4722,32 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "parameter_modifier": { - "type": "parameter_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "predefined_type": { "type": "predefined_type", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "preproc_integer_literal": { - "type": "preproc_integer_literal", + "preproc_arg": { + "type": "preproc_arg", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "preproc_message": { - "type": "preproc_message", + "raw_string_content": { + "type": "raw_string_content", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "preproc_string_literal": { - "type": "preproc_string_literal", + "raw_string_end": { + "type": "raw_string_end", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "raw_string_literal": { - "type": "raw_string_literal", + "raw_string_start": { + "type": "raw_string_start", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -4674,14 +4770,20 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "string_literal_encoding": { - "type": "string_literal_encoding", + "shebang_directive": { + "type": "shebang_directive", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "string_content": { + "type": "string_content", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "string_literal_fragment": { - "type": "string_literal_fragment", + "string_literal_encoding": { + "type": "string_literal_encoding", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -4704,6 +4806,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "|=": { + "type": "|=", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "||": { "type": "||", "singleFieldNames": [], diff --git a/packages/tree-sitter-port/output/tree-sitter-c-sharp/meta.json b/packages/tree-sitter-port/output/tree-sitter-c-sharp/meta.json index 38de111..61fdd02 100644 --- a/packages/tree-sitter-port/output/tree-sitter-c-sharp/meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-c-sharp/meta.json @@ -1,5 +1,5 @@ { "name": "tree-sitter-c-sharp", - "version": "0.20.0", - "generatedAt": "2023-08-13T18:16:24.586Z" + "version": "0.21.2", + "generatedAt": "2024-06-26T15:41:38.824Z" } diff --git a/packages/tree-sitter-port/output/tree-sitter-c-sharp/parser.wasm b/packages/tree-sitter-port/output/tree-sitter-c-sharp/parser.wasm index 9ba6b75..65e8511 100755 Binary files a/packages/tree-sitter-port/output/tree-sitter-c-sharp/parser.wasm and b/packages/tree-sitter-port/output/tree-sitter-c-sharp/parser.wasm differ diff --git a/packages/tree-sitter-port/output/tree-sitter-c/fields-meta.json b/packages/tree-sitter-port/output/tree-sitter-c/fields-meta.json index a0f4b0d..d28eed0 100644 --- a/packages/tree-sitter-port/output/tree-sitter-c/fields-meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-c/fields-meta.json @@ -20,7 +20,8 @@ "abstract_array_declarator": "children", "abstract_function_declarator": "children", "abstract_parenthesized_declarator": "children", - "abstract_pointer_declarator": "children" + "abstract_pointer_declarator": "children", + "ms_call_modifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -28,10 +29,44 @@ "type": "abstract_pointer_declarator", "singleFieldNames": ["declarator"], "nodeTypeToMultipleFieldName": { + "ms_pointer_modifier": "children", "type_qualifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, + "alignas_qualifier": { + "type": "alignas_qualifier", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "alignof_expression": "children", + "assignment_expression": "children", + "binary_expression": "children", + "call_expression": "children", + "cast_expression": "children", + "char_literal": "children", + "compound_literal_expression": "children", + "concatenated_string": "children", + "conditional_expression": "children", + "false": "children", + "field_expression": "children", + "generic_expression": "children", + "gnu_asm_expression": "children", + "identifier": "children", + "null": "children", + "number_literal": "children", + "offsetof_expression": "children", + "parenthesized_expression": "children", + "pointer_expression": "children", + "sizeof_expression": "children", + "string_literal": "children", + "subscript_expression": "children", + "true": "children", + "unary_expression": "children", + "update_expression": "children", + "type_descriptor": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "alignof_expression": { "type": "alignof_expression", "singleFieldNames": ["type"], @@ -42,6 +77,7 @@ "type": "argument_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "compound_statement": "children", "alignof_expression": "children", "assignment_expression": "children", "binary_expression": "children", @@ -67,7 +103,6 @@ "true": "children", "unary_expression": "children", "update_expression": "children", - "compound_statement": "children", "preproc_defined": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -131,6 +166,7 @@ "type": "attributed_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "attribute_declaration": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -143,9 +179,10 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", - "while_statement": "children", - "attribute_declaration": "children" + "while_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -215,6 +252,8 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "type_definition": "children", "while_statement": "children" @@ -252,6 +291,15 @@ "type": "compound_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "declaration": "children", + "function_definition": "children", + "linkage_specification": "children", + "preproc_call": "children", + "preproc_def": "children", + "preproc_function_def": "children", + "preproc_if": "children", + "preproc_ifdef": "children", + "preproc_include": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -264,25 +312,18 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", - "declaration": "children", - "function_definition": "children", - "linkage_specification": "children", - "preproc_call": "children", - "preproc_def": "children", - "preproc_function_def": "children", - "preproc_if": "children", - "preproc_ifdef": "children", - "preproc_include": "children", - "type_definition": "children" + "union_specifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -314,11 +355,12 @@ "array_declarator": "declarator", "attributed_declarator": "declarator", "function_declarator": "declarator", + "gnu_asm_expression": "declarator", "identifier": "declarator", + "init_declarator": "declarator", + "ms_call_modifier": "declarator", "parenthesized_declarator": "declarator", "pointer_declarator": "declarator", - "gnu_asm_expression": "declarator", - "init_declarator": "declarator", "attribute_declaration": "children", "attribute_specifier": "children", "ms_declspec_modifier": "children", @@ -331,6 +373,15 @@ "type": "declaration_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "declaration": "children", + "function_definition": "children", + "linkage_specification": "children", + "preproc_call": "children", + "preproc_def": "children", + "preproc_function_def": "children", + "preproc_if": "children", + "preproc_ifdef": "children", + "preproc_include": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -343,25 +394,18 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", - "declaration": "children", - "function_definition": "children", - "linkage_specification": "children", - "preproc_call": "children", - "preproc_def": "children", - "preproc_function_def": "children", - "preproc_if": "children", - "preproc_ifdef": "children", - "preproc_include": "children", - "type_definition": "children" + "union_specifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -387,6 +431,8 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children" }, @@ -410,7 +456,10 @@ "type": "enumerator_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "enumerator": "children" + "enumerator": "children", + "preproc_call": "children", + "preproc_if": "children", + "preproc_ifdef": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -418,6 +467,7 @@ "type": "expression_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "comma_expression": "children", "alignof_expression": "children", "assignment_expression": "children", "binary_expression": "children", @@ -442,8 +492,7 @@ "subscript_expression": "children", "true": "children", "unary_expression": "children", - "update_expression": "children", - "comma_expression": "children" + "update_expression": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -504,7 +553,9 @@ "singleFieldNames": ["declarator", "parameters"], "nodeTypeToMultipleFieldName": { "attribute_specifier": "children", - "gnu_asm_expression": "children" + "call_expression": "children", + "gnu_asm_expression": "children", + "identifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -559,6 +610,7 @@ "type": "gnu_asm_clobber_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "concatenated_string": "register", "string_literal": "register" }, "multipleOrChildrenFieldNames": ["register"] @@ -676,7 +728,9 @@ "singleFieldNames": ["value"], "nodeTypeToMultipleFieldName": { "field_designator": "designator", - "subscript_designator": "designator" + "field_identifier": "designator", + "subscript_designator": "designator", + "subscript_range_designator": "designator" }, "multipleOrChildrenFieldNames": ["designator"] }, @@ -696,6 +750,8 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children" }, @@ -798,7 +854,8 @@ "pointer_declarator": "children", "field_identifier": "children", "primitive_type": "children", - "type_identifier": "children" + "type_identifier": "children", + "ms_call_modifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -806,6 +863,7 @@ "type": "parenthesized_expression", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "comma_expression": "children", "alignof_expression": "children", "assignment_expression": "children", "binary_expression": "children", @@ -831,7 +889,6 @@ "true": "children", "unary_expression": "children", "update_expression": "children", - "comma_expression": "children", "preproc_defined": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -876,6 +933,17 @@ "type": "preproc_elif", "singleFieldNames": ["alternative", "condition"], "nodeTypeToMultipleFieldName": { + "declaration": "children", + "enumerator": "children", + "field_declaration": "children", + "function_definition": "children", + "linkage_specification": "children", + "preproc_call": "children", + "preproc_def": "children", + "preproc_function_def": "children", + "preproc_if": "children", + "preproc_ifdef": "children", + "preproc_include": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -888,16 +956,27 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", + "union_specifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_elifdef": { + "type": "preproc_elifdef", + "singleFieldNames": ["alternative", "name"], + "nodeTypeToMultipleFieldName": { "declaration": "children", + "enumerator": "children", "field_declaration": "children", "function_definition": "children", "linkage_specification": "children", @@ -907,14 +986,6 @@ "preproc_if": "children", "preproc_ifdef": "children", "preproc_include": "children", - "type_definition": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "preproc_elifdef": { - "type": "preproc_elifdef", - "singleFieldNames": ["alternative", "name"], - "nodeTypeToMultipleFieldName": { "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -927,16 +998,28 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", + "union_specifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_else": { + "type": "preproc_else", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { "declaration": "children", + "enumerator": "children", + "field_declaration": "children", "function_definition": "children", "linkage_specification": "children", "preproc_call": "children", @@ -945,14 +1028,6 @@ "preproc_if": "children", "preproc_ifdef": "children", "preproc_include": "children", - "type_definition": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "preproc_else": { - "type": "preproc_else", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -965,26 +1040,18 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", - "declaration": "children", - "field_declaration": "children", - "function_definition": "children", - "linkage_specification": "children", - "preproc_call": "children", - "preproc_def": "children", - "preproc_function_def": "children", - "preproc_if": "children", - "preproc_ifdef": "children", - "preproc_include": "children", - "type_definition": "children" + "union_specifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -998,6 +1065,17 @@ "type": "preproc_if", "singleFieldNames": ["alternative", "condition"], "nodeTypeToMultipleFieldName": { + "declaration": "children", + "enumerator": "children", + "field_declaration": "children", + "function_definition": "children", + "linkage_specification": "children", + "preproc_call": "children", + "preproc_def": "children", + "preproc_function_def": "children", + "preproc_if": "children", + "preproc_ifdef": "children", + "preproc_include": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -1010,16 +1088,27 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", + "union_specifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "preproc_ifdef": { + "type": "preproc_ifdef", + "singleFieldNames": ["alternative", "name"], + "nodeTypeToMultipleFieldName": { "declaration": "children", + "enumerator": "children", "field_declaration": "children", "function_definition": "children", "linkage_specification": "children", @@ -1029,14 +1118,6 @@ "preproc_if": "children", "preproc_ifdef": "children", "preproc_include": "children", - "type_definition": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "preproc_ifdef": { - "type": "preproc_ifdef", - "singleFieldNames": ["alternative", "name"], - "nodeTypeToMultipleFieldName": { "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -1049,26 +1130,18 @@ "if_statement": "children", "labeled_statement": "children", "return_statement": "children", + "seh_leave_statement": "children", + "seh_try_statement": "children", "switch_statement": "children", "while_statement": "children", + "type_definition": "children", "enum_specifier": "children", "macro_type_specifier": "children", "primitive_type": "children", "sized_type_specifier": "children", "struct_specifier": "children", "type_identifier": "children", - "union_specifier": "children", - "declaration": "children", - "field_declaration": "children", - "function_definition": "children", - "linkage_specification": "children", - "preproc_call": "children", - "preproc_def": "children", - "preproc_function_def": "children", - "preproc_if": "children", - "preproc_ifdef": "children", - "preproc_include": "children", - "type_definition": "children" + "union_specifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -1090,6 +1163,7 @@ "type": "return_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "comma_expression": "children", "alignof_expression": "children", "assignment_expression": "children", "binary_expression": "children", @@ -1114,8 +1188,34 @@ "subscript_expression": "children", "true": "children", "unary_expression": "children", - "update_expression": "children", - "comma_expression": "children" + "update_expression": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "seh_except_clause": { + "type": "seh_except_clause", + "singleFieldNames": ["body", "filter"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "seh_finally_clause": { + "type": "seh_finally_clause", + "singleFieldNames": ["body"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "seh_leave_statement": { + "type": "seh_leave_statement", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "seh_try_statement": { + "type": "seh_try_statement", + "singleFieldNames": ["body"], + "nodeTypeToMultipleFieldName": { + "seh_except_clause": "children", + "seh_finally_clause": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -1193,6 +1293,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "subscript_range_designator": { + "type": "subscript_range_designator", + "singleFieldNames": ["end", "start"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "switch_statement": { "type": "switch_statement", "singleFieldNames": ["body", "condition"], @@ -1203,13 +1309,6 @@ "type": "translation_unit", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "enum_specifier": "children", - "macro_type_specifier": "children", - "primitive_type": "children", - "sized_type_specifier": "children", - "struct_specifier": "children", - "type_identifier": "children", - "union_specifier": "children", "attributed_statement": "children", "break_statement": "children", "case_statement": "children", @@ -1233,6 +1332,13 @@ "return_statement": "children", "switch_statement": "children", "type_definition": "children", + "enum_specifier": "children", + "macro_type_specifier": "children", + "primitive_type": "children", + "sized_type_specifier": "children", + "struct_specifier": "children", + "type_identifier": "children", + "union_specifier": "children", "while_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1264,8 +1370,10 @@ "type_qualifier": { "type": "type_qualifier", "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] + "nodeTypeToMultipleFieldName": { + "alignas_qualifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] }, "unary_expression": { "type": "unary_expression", diff --git a/packages/tree-sitter-port/output/tree-sitter-c/meta.json b/packages/tree-sitter-port/output/tree-sitter-c/meta.json index 2b29f5c..bba4b0f 100644 --- a/packages/tree-sitter-port/output/tree-sitter-c/meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-c/meta.json @@ -1,5 +1,5 @@ { "name": "tree-sitter-c", - "version": "0.20.5", - "generatedAt": "2023-08-13T18:16:22.639Z" + "version": "0.21.4", + "generatedAt": "2024-06-26T15:41:27.820Z" } diff --git a/packages/tree-sitter-port/output/tree-sitter-c/parser.wasm b/packages/tree-sitter-port/output/tree-sitter-c/parser.wasm index 8a5e66c..0a801e0 100755 Binary files a/packages/tree-sitter-port/output/tree-sitter-c/parser.wasm and b/packages/tree-sitter-port/output/tree-sitter-c/parser.wasm differ diff --git a/packages/tree-sitter-port/output/tree-sitter-lua/fields-meta.json b/packages/tree-sitter-port/output/tree-sitter-lua/fields-meta.json index f1ad271..fabde99 100644 --- a/packages/tree-sitter-port/output/tree-sitter-lua/fields-meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-lua/fields-meta.json @@ -1,23 +1,46 @@ { - "argument_list": { - "type": "argument_list", + "arguments": { + "type": "arguments", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "expression_list": "children", + "binary_expression": "children", + "false": "children", + "function_call": "children", + "function_definition": "children", + "nil": "children", + "number": "children", + "parenthesized_expression": "children", "string": "children", - "table": "children" + "table_constructor": "children", + "true": "children", + "unary_expression": "children", + "vararg_expression": "children", + "bracket_index_expression": "children", + "dot_index_expression": "children", + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "assignment_statement": { + "type": "assignment_statement", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "expression_list": "children", + "variable_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "attribute": { "type": "attribute", - "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] }, "binary_expression": { "type": "binary_expression", - "singleFieldNames": ["left", "operator", "right"], + "singleFieldNames": ["left", "right"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, @@ -26,27 +49,25 @@ "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "return_statement": "children", + "assignment_statement": "children", "break_statement": "children", - "call": "children", + "function_declaration": "children", + "variable_declaration": "children", "do_statement": "children", "empty_statement": "children", - "for_generic_statement": "children", - "for_numeric_statement": "children", - "function_definition_statement": "children", + "for_statement": "children", + "function_call": "children", "goto_statement": "children", "if_statement": "children", "label_statement": "children", - "local_function_definition_statement": "children", - "local_variable_declaration": "children", "repeat_statement": "children", - "variable_assignment": "children", "while_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "call": { - "type": "call", - "singleFieldNames": ["arguments", "function"], + "bracket_index_expression": { + "type": "bracket_index_expression", + "singleFieldNames": ["field", "table"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, @@ -54,29 +75,27 @@ "type": "chunk", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "hash_bang_line": "children", "return_statement": "children", - "shebang": "children", + "assignment_statement": "children", "break_statement": "children", - "call": "children", + "function_declaration": "children", + "variable_declaration": "children", "do_statement": "children", "empty_statement": "children", - "for_generic_statement": "children", - "for_numeric_statement": "children", - "function_definition_statement": "children", + "for_statement": "children", + "function_call": "children", "goto_statement": "children", "if_statement": "children", "label_statement": "children", - "local_function_definition_statement": "children", - "local_variable_declaration": "children", "repeat_statement": "children", - "variable_assignment": "children", "while_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "comment": { "type": "comment", - "singleFieldNames": [], + "singleFieldNames": ["content", "end", "start"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, @@ -86,14 +105,20 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "else_clause": { - "type": "else_clause", + "dot_index_expression": { + "type": "dot_index_expression", + "singleFieldNames": ["field", "table"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "else_statement": { + "type": "else_statement", "singleFieldNames": ["body"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "elseif_clause": { - "type": "elseif_clause", + "elseif_statement": { + "type": "elseif_statement", "singleFieldNames": ["condition", "consequence"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -110,96 +135,100 @@ "nodeTypeToMultipleFieldName": { "binary_expression": "children", "false": "children", + "function_call": "children", "function_definition": "children", "nil": "children", "number": "children", - "call": "children", "parenthesized_expression": "children", - "variable": "children", "string": "children", - "table": "children", + "table_constructor": "children", "true": "children", "unary_expression": "children", - "vararg_expression": "children" + "vararg_expression": "children", + "bracket_index_expression": "children", + "dot_index_expression": "children", + "identifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "field": { "type": "field", - "singleFieldNames": ["key", "value"], + "singleFieldNames": ["name", "value"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "field_list": { - "type": "field_list", + "for_generic_clause": { + "type": "for_generic_clause", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "field": "children" + "expression_list": "children", + "variable_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "for_generic_statement": { - "type": "for_generic_statement", - "singleFieldNames": ["body", "left", "right"], + "for_numeric_clause": { + "type": "for_numeric_clause", + "singleFieldNames": ["end", "name", "start", "step"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "for_numeric_statement": { - "type": "for_numeric_statement", - "singleFieldNames": ["body", "end", "name", "start", "step"], + "for_statement": { + "type": "for_statement", + "singleFieldNames": ["body", "clause"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "function_definition": { - "type": "function_definition", - "singleFieldNames": ["body", "parameters"], + "function_call": { + "type": "function_call", + "singleFieldNames": ["arguments", "name"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "function_definition_statement": { - "type": "function_definition_statement", + "function_declaration": { + "type": "function_declaration", "singleFieldNames": ["body", "name", "parameters"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "goto_statement": { - "type": "goto_statement", - "singleFieldNames": ["name"], + "function_definition": { + "type": "function_definition", + "singleFieldNames": ["body", "parameters"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "goto_statement": { + "type": "goto_statement", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "if_statement": { "type": "if_statement", "singleFieldNames": ["condition", "consequence"], "nodeTypeToMultipleFieldName": { - "else_clause": "alternative", - "elseif_clause": "alternative" + "else_statement": "alternative", + "elseif_statement": "alternative" }, "multipleOrChildrenFieldNames": ["alternative"] }, "label_statement": { "type": "label_statement", - "singleFieldNames": ["name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "local_function_definition_statement": { - "type": "local_function_definition_statement", - "singleFieldNames": ["body", "name", "parameters"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "local_variable_declaration": { - "type": "local_variable_declaration", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "expression_list": "children", - "variable_list": "children" + "identifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, - "parameter_list": { - "type": "parameter_list", + "method_index_expression": { + "type": "method_index_expression", + "singleFieldNames": ["method", "table"], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, + "parameters": { + "type": "parameters", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { "identifier": "name", @@ -213,17 +242,19 @@ "nodeTypeToMultipleFieldName": { "binary_expression": "children", "false": "children", + "function_call": "children", "function_definition": "children", "nil": "children", "number": "children", - "call": "children", "parenthesized_expression": "children", - "variable": "children", "string": "children", - "table": "children", + "table_constructor": "children", "true": "children", "unary_expression": "children", - "vararg_expression": "children" + "vararg_expression": "children", + "bracket_index_expression": "children", + "dot_index_expression": "children", + "identifier": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -237,44 +268,43 @@ "type": "return_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "empty_statement": "children", "expression_list": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "string": { "type": "string", - "singleFieldNames": [], + "singleFieldNames": ["content", "end", "start"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "table": { - "type": "table", + "string_content": { + "type": "string_content", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "escape_sequence": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "table_constructor": { + "type": "table_constructor", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "field_list": "children" + "field": "children" }, "multipleOrChildrenFieldNames": ["children"] }, "unary_expression": { "type": "unary_expression", - "singleFieldNames": ["argument", "operator"], + "singleFieldNames": ["operand"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "variable": { - "type": "variable", - "singleFieldNames": ["field", "method", "name", "table"], - "nodeTypeToMultipleFieldName": { - "attribute": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "variable_assignment": { - "type": "variable_assignment", + "variable_declaration": { + "type": "variable_declaration", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "expression_list": "children", + "assignment_statement": "children", "variable_list": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -283,10 +313,12 @@ "type": "variable_list", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "identifier": "name", - "variable": "children" + "attribute": "attribute", + "bracket_index_expression": "name", + "dot_index_expression": "name", + "identifier": "name" }, - "multipleOrChildrenFieldNames": ["name", "children"] + "multipleOrChildrenFieldNames": ["attribute", "name"] }, "while_statement": { "type": "while_statement", @@ -294,122 +326,50 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "#": { - "type": "#", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "%": { - "type": "%", + "--": { + "type": "--", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "&": { - "type": "&", + "[[": { + "type": "[[", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "*": { - "type": "*", + "]]": { + "type": "]]", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "+": { - "type": "+", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "-": { - "type": "-", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "..": { - "type": "..", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "/": { - "type": "/", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "//": { - "type": "//", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<": { - "type": "<", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<<": { - "type": "<<", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<=": { - "type": "<=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "==": { - "type": "==", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">": { - "type": ">", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">=": { - "type": ">=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">>": { - "type": ">>", + "break_statement": { + "type": "break_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "^": { - "type": "^", + "comment_content": { + "type": "comment_content", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "and": { - "type": "and", + "escape_sequence": { + "type": "escape_sequence", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "break_statement": { - "type": "break_statement", + "false": { + "type": "false", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "false": { - "type": "false", + "hash_bang_line": { + "type": "hash_bang_line", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] @@ -426,30 +386,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "not": { - "type": "not", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "number": { "type": "number", "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, - "or": { - "type": "or", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "shebang": { - "type": "shebang", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, "true": { "type": "true", "singleFieldNames": [], @@ -461,23 +403,5 @@ "singleFieldNames": [], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] - }, - "|": { - "type": "|", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "~": { - "type": "~", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "~=": { - "type": "~=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] } } diff --git a/packages/tree-sitter-port/output/tree-sitter-lua/meta.json b/packages/tree-sitter-port/output/tree-sitter-lua/meta.json index d6f69ee..6b94e7d 100644 --- a/packages/tree-sitter-port/output/tree-sitter-lua/meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-lua/meta.json @@ -1,5 +1,5 @@ { "name": "tree-sitter-lua", - "version": "2.1.3", - "generatedAt": "2023-08-13T18:16:28.581Z" + "version": "0.1.0", + "generatedAt": "2024-06-26T15:41:59.042Z" } diff --git a/packages/tree-sitter-port/output/tree-sitter-lua/parser.wasm b/packages/tree-sitter-port/output/tree-sitter-lua/parser.wasm index 6f44988..9e28306 100755 Binary files a/packages/tree-sitter-port/output/tree-sitter-lua/parser.wasm and b/packages/tree-sitter-port/output/tree-sitter-lua/parser.wasm differ diff --git a/packages/tree-sitter-port/output/tree-sitter-php/fields-meta.json b/packages/tree-sitter-port/output/tree-sitter-php/fields-meta.json deleted file mode 100644 index efb8d64..0000000 --- a/packages/tree-sitter-port/output/tree-sitter-php/fields-meta.json +++ /dev/null @@ -1,3051 +0,0 @@ -{ - "abstract_modifier": { - "type": "abstract_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "anonymous_function_creation_expression": { - "type": "anonymous_function_creation_expression", - "singleFieldNames": [ - "attributes", - "body", - "parameters", - "reference_modifier", - "return_type" - ], - "nodeTypeToMultipleFieldName": { - "anonymous_function_use_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "anonymous_function_use_clause": { - "type": "anonymous_function_use_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "by_ref": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "argument": { - "type": "argument", - "singleFieldNames": ["name", "reference_modifier"], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "variadic_unpacking": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "arguments": { - "type": "arguments", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "argument": "children", - "variadic_placeholder": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "array_creation_expression": { - "type": "array_creation_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "array_element_initializer": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "array_element_initializer": { - "type": "array_element_initializer", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "by_ref": "children", - "variadic_unpacking": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "arrow_function": { - "type": "arrow_function", - "singleFieldNames": [ - "attributes", - "body", - "parameters", - "reference_modifier", - "return_type" - ], - "nodeTypeToMultipleFieldName": { - "static_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "assignment_expression": { - "type": "assignment_expression", - "singleFieldNames": ["left", "right"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "attribute": { - "type": "attribute", - "singleFieldNames": ["parameters"], - "nodeTypeToMultipleFieldName": { - "name": "children", - "qualified_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "attribute_group": { - "type": "attribute_group", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "attribute": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "attribute_list": { - "type": "attribute_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "attribute_group": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "augmented_assignment_expression": { - "type": "augmented_assignment_expression", - "singleFieldNames": ["left", "operator", "right"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "base_clause": { - "type": "base_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "qualified_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "binary_expression": { - "type": "binary_expression", - "singleFieldNames": ["left", "operator", "right"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "break_statement": { - "type": "break_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "by_ref": { - "type": "by_ref", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "scoped_call_expression": "children", - "subscript_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "case_statement": { - "type": "case_statement", - "singleFieldNames": ["value"], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "cast_expression": { - "type": "cast_expression", - "singleFieldNames": ["type", "value"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "cast_type": { - "type": "cast_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "catch_clause": { - "type": "catch_clause", - "singleFieldNames": ["body", "name", "type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "class_constant_access_expression": { - "type": "class_constant_access_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "array_creation_expression": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "encapsed_string": "children", - "function_call_expression": "children", - "heredoc": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nowdoc": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "parenthesized_expression": "children", - "qualified_name": "children", - "relative_scope": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "string": "children", - "subscript_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "class_declaration": { - "type": "class_declaration", - "singleFieldNames": ["attributes", "body", "modifier", "name"], - "nodeTypeToMultipleFieldName": { - "base_clause": "children", - "class_interface_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "class_interface_clause": { - "type": "class_interface_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "qualified_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "clone_expression": { - "type": "clone_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "colon_block": { - "type": "colon_block", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "compound_statement": { - "type": "compound_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "conditional_expression": { - "type": "conditional_expression", - "singleFieldNames": ["alternative", "body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "const_declaration": { - "type": "const_declaration", - "singleFieldNames": ["attributes", "modifier"], - "nodeTypeToMultipleFieldName": { - "const_element": "children", - "visibility_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "const_element": { - "type": "const_element", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "continue_statement": { - "type": "continue_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "declaration_list": { - "type": "declaration_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "const_declaration": "children", - "method_declaration": "children", - "property_declaration": "children", - "use_declaration": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "declare_directive": { - "type": "declare_directive", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "declare_statement": { - "type": "declare_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children", - "declare_directive": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "default_statement": { - "type": "default_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "do_statement": { - "type": "do_statement", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "dynamic_variable_name": { - "type": "dynamic_variable_name", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "echo_statement": { - "type": "echo_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "sequence_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "else_clause": { - "type": "else_clause", - "singleFieldNames": ["body"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "else_if_clause": { - "type": "else_if_clause", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "empty_statement": { - "type": "empty_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "encapsed_string": { - "type": "encapsed_string", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "escape_sequence": "children", - "string_value": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "enum_case": { - "type": "enum_case", - "singleFieldNames": ["attributes", "name", "value"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "enum_declaration": { - "type": "enum_declaration", - "singleFieldNames": ["attributes", "body", "name"], - "nodeTypeToMultipleFieldName": { - "class_interface_clause": "children", - "primitive_type": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "enum_declaration_list": { - "type": "enum_declaration_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "enum_case": "children", - "method_declaration": "children", - "use_declaration": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "exponentiation_expression": { - "type": "exponentiation_expression", - "singleFieldNames": ["left", "right"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "expression_statement": { - "type": "expression_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "final_modifier": { - "type": "final_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "finally_clause": { - "type": "finally_clause", - "singleFieldNames": ["body"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "for_statement": { - "type": "for_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children", - "sequence_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "foreach_statement": { - "type": "foreach_statement", - "singleFieldNames": ["body"], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "by_ref": "children", - "list_literal": "children", - "pair": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "formal_parameters": { - "type": "formal_parameters", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "property_promotion_parameter": "children", - "simple_parameter": "children", - "variadic_parameter": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "function_call_expression": { - "type": "function_call_expression", - "singleFieldNames": ["arguments", "function"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "function_definition": { - "type": "function_definition", - "singleFieldNames": [ - "attributes", - "body", - "name", - "parameters", - "reference_modifier", - "return_type" - ], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "function_static_declaration": { - "type": "function_static_declaration", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "static_variable_declaration": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "global_declaration": { - "type": "global_declaration", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "dynamic_variable_name": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "goto_statement": { - "type": "goto_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "heredoc": { - "type": "heredoc", - "singleFieldNames": ["end_tag", "value"], - "nodeTypeToMultipleFieldName": { - "\"": "identifier", - "heredoc_start": "identifier" - }, - "multipleOrChildrenFieldNames": ["identifier"] - }, - "heredoc_body": { - "type": "heredoc_body", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "escape_sequence": "children", - "string_value": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "if_statement": { - "type": "if_statement", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": { - "else_clause": "alternative", - "else_if_clause": "alternative" - }, - "multipleOrChildrenFieldNames": ["alternative"] - }, - "include_expression": { - "type": "include_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "include_once_expression": { - "type": "include_once_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "interface_declaration": { - "type": "interface_declaration", - "singleFieldNames": ["body", "name"], - "nodeTypeToMultipleFieldName": { - "base_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "intersection_type": { - "type": "intersection_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "named_type": "children", - "optional_type": "children", - "primitive_type": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "list_literal": { - "type": "list_literal", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "by_ref": "children", - "list_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "match_block": { - "type": "match_block", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "match_conditional_expression": "children", - "match_default_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "match_condition_list": { - "type": "match_condition_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "match_conditional_expression": { - "type": "match_conditional_expression", - "singleFieldNames": ["conditional_expressions", "return_expression"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "match_default_expression": { - "type": "match_default_expression", - "singleFieldNames": ["return_expression"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "match_expression": { - "type": "match_expression", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "member_access_expression": { - "type": "member_access_expression", - "singleFieldNames": ["name", "object"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "member_call_expression": { - "type": "member_call_expression", - "singleFieldNames": ["arguments", "name", "object"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "method_declaration": { - "type": "method_declaration", - "singleFieldNames": [ - "attributes", - "body", - "name", - "parameters", - "reference_modifier", - "return_type" - ], - "nodeTypeToMultipleFieldName": { - "abstract_modifier": "children", - "final_modifier": "children", - "readonly_modifier": "children", - "static_modifier": "children", - "var_modifier": "children", - "visibility_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "name": { - "type": "name", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "named_label_statement": { - "type": "named_label_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "named_type": { - "type": "named_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "qualified_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_aliasing_clause": { - "type": "namespace_aliasing_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_definition": { - "type": "namespace_definition", - "singleFieldNames": ["body", "name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "namespace_name": { - "type": "namespace_name", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_name_as_prefix": { - "type": "namespace_name_as_prefix", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "namespace_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_use_clause": { - "type": "namespace_use_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "namespace_aliasing_clause": "children", - "qualified_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_use_declaration": { - "type": "namespace_use_declaration", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "namespace_name": "children", - "namespace_use_clause": "children", - "namespace_use_group": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_use_group": { - "type": "namespace_use_group", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "namespace_use_group_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "namespace_use_group_clause": { - "type": "namespace_use_group_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "namespace_aliasing_clause": "children", - "namespace_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "nowdoc": { - "type": "nowdoc", - "singleFieldNames": ["end_tag", "identifier", "value"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "nowdoc_body": { - "type": "nowdoc_body", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "nowdoc_string": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "nullsafe_member_access_expression": { - "type": "nullsafe_member_access_expression", - "singleFieldNames": ["name", "object"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "nullsafe_member_call_expression": { - "type": "nullsafe_member_call_expression", - "singleFieldNames": ["arguments", "name", "object"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "object_creation_expression": { - "type": "object_creation_expression", - "singleFieldNames": ["attributes"], - "nodeTypeToMultipleFieldName": { - "arguments": "children", - "base_clause": "children", - "class_interface_clause": "children", - "declaration_list": "children", - "dynamic_variable_name": "children", - "member_access_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "qualified_name": "children", - "scoped_property_access_expression": "children", - "subscript_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "optional_type": { - "type": "optional_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "named_type": "children", - "primitive_type": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "pair": { - "type": "pair", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "by_ref": "children", - "list_literal": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "parenthesized_expression": { - "type": "parenthesized_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "primitive_type": { - "type": "primitive_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "print_intrinsic": { - "type": "print_intrinsic", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "program": { - "type": "program", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "break_statement": "children", - "class_declaration": "children", - "compound_statement": "children", - "const_declaration": "children", - "continue_statement": "children", - "declare_statement": "children", - "do_statement": "children", - "echo_statement": "children", - "empty_statement": "children", - "enum_declaration": "children", - "expression_statement": "children", - "for_statement": "children", - "foreach_statement": "children", - "function_definition": "children", - "function_static_declaration": "children", - "global_declaration": "children", - "goto_statement": "children", - "if_statement": "children", - "interface_declaration": "children", - "named_label_statement": "children", - "namespace_definition": "children", - "namespace_use_declaration": "children", - "return_statement": "children", - "switch_statement": "children", - "trait_declaration": "children", - "try_statement": "children", - "unset_statement": "children", - "while_statement": "children", - "php_tag": "children", - "text": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_declaration": { - "type": "property_declaration", - "singleFieldNames": ["attributes", "type"], - "nodeTypeToMultipleFieldName": { - "abstract_modifier": "children", - "final_modifier": "children", - "property_element": "children", - "readonly_modifier": "children", - "static_modifier": "children", - "var_modifier": "children", - "visibility_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_element": { - "type": "property_element", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "property_initializer": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_initializer": { - "type": "property_initializer", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "property_promotion_parameter": { - "type": "property_promotion_parameter", - "singleFieldNames": [ - "default_value", - "name", - "readonly", - "type", - "visibility" - ], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "qualified_name": { - "type": "qualified_name", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "namespace_name_as_prefix": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "readonly_modifier": { - "type": "readonly_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "reference_assignment_expression": { - "type": "reference_assignment_expression", - "singleFieldNames": ["left", "right"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "reference_modifier": { - "type": "reference_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "relative_scope": { - "type": "relative_scope", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "require_expression": { - "type": "require_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "require_once_expression": { - "type": "require_once_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "return_statement": { - "type": "return_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "scoped_call_expression": { - "type": "scoped_call_expression", - "singleFieldNames": ["arguments", "name", "scope"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "scoped_property_access_expression": { - "type": "scoped_property_access_expression", - "singleFieldNames": ["name", "scope"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "sequence_expression": { - "type": "sequence_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "sequence_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "shell_command_expression": { - "type": "shell_command_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "escape_sequence": "children", - "string_value": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "simple_parameter": { - "type": "simple_parameter", - "singleFieldNames": [ - "attributes", - "default_value", - "name", - "reference_modifier", - "type" - ], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "static_modifier": { - "type": "static_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "static_variable_declaration": { - "type": "static_variable_declaration", - "singleFieldNames": ["name", "value"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "subscript_expression": { - "type": "subscript_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "switch_block": { - "type": "switch_block", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "case_statement": "children", - "default_statement": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "switch_statement": { - "type": "switch_statement", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "text": { - "type": "text", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "text_interpolation": { - "type": "text_interpolation", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "php_tag": "children", - "text": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "throw_expression": { - "type": "throw_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "trait_declaration": { - "type": "trait_declaration", - "singleFieldNames": ["body", "name"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "try_statement": { - "type": "try_statement", - "singleFieldNames": ["body"], - "nodeTypeToMultipleFieldName": { - "catch_clause": "children", - "finally_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "type_list": { - "type": "type_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "named_type": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "unary_op_expression": { - "type": "unary_op_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "union_type": { - "type": "union_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "named_type": "children", - "optional_type": "children", - "primitive_type": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "unset_statement": { - "type": "unset_statement", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "cast_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "subscript_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "update_expression": { - "type": "update_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "cast_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "subscript_expression": "children", - "variable_name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "use_as_clause": { - "type": "use_as_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "class_constant_access_expression": "children", - "name": "children", - "visibility_modifier": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "use_declaration": { - "type": "use_declaration", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children", - "qualified_name": "children", - "use_list": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "use_instead_of_clause": { - "type": "use_instead_of_clause", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "class_constant_access_expression": "children", - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "use_list": { - "type": "use_list", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "use_as_clause": "children", - "use_instead_of_clause": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "variable_name": { - "type": "variable_name", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "name": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "variadic_parameter": { - "type": "variadic_parameter", - "singleFieldNames": ["attributes", "name", "reference_modifier", "type"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "variadic_placeholder": { - "type": "variadic_placeholder", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "variadic_unpacking": { - "type": "variadic_unpacking", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "visibility_modifier": { - "type": "visibility_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "while_statement": { - "type": "while_statement", - "singleFieldNames": ["body", "condition"], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "yield_expression": { - "type": "yield_expression", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": { - "boolean": "children", - "encapsed_string": "children", - "float": "children", - "heredoc": "children", - "integer": "children", - "nowdoc": "children", - "null": "children", - "string": "children", - "anonymous_function_creation_expression": "children", - "array_creation_expression": "children", - "arrow_function": "children", - "cast_expression": "children", - "class_constant_access_expression": "children", - "dynamic_variable_name": "children", - "function_call_expression": "children", - "member_access_expression": "children", - "member_call_expression": "children", - "name": "children", - "nullsafe_member_access_expression": "children", - "nullsafe_member_call_expression": "children", - "object_creation_expression": "children", - "parenthesized_expression": "children", - "print_intrinsic": "children", - "qualified_name": "children", - "scoped_call_expression": "children", - "scoped_property_access_expression": "children", - "shell_command_expression": "children", - "subscript_expression": "children", - "throw_expression": "children", - "update_expression": "children", - "variable_name": "children", - "assignment_expression": "children", - "augmented_assignment_expression": "children", - "binary_expression": "children", - "clone_expression": "children", - "conditional_expression": "children", - "exponentiation_expression": "children", - "include_expression": "children", - "include_once_expression": "children", - "match_expression": "children", - "reference_assignment_expression": "children", - "require_expression": "children", - "require_once_expression": "children", - "unary_op_expression": "children", - "yield_expression": "children", - "array_element_initializer": "children" - }, - "multipleOrChildrenFieldNames": ["children"] - }, - "!=": { - "type": "!=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "!==": { - "type": "!==", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "\"": { - "type": "\"", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "%": { - "type": "%", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "%=": { - "type": "%=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "&": { - "type": "&", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "&&": { - "type": "&&", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "&=": { - "type": "&=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "*": { - "type": "*", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "**=": { - "type": "**=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "*=": { - "type": "*=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "+": { - "type": "+", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "+=": { - "type": "+=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "-": { - "type": "-", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "-=": { - "type": "-=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ".": { - "type": ".", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ".=": { - "type": ".=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "/": { - "type": "/", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "/=": { - "type": "/=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<": { - "type": "<", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<<": { - "type": "<<", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<<=": { - "type": "<<=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<=": { - "type": "<=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<=>": { - "type": "<=>", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "<>": { - "type": "<>", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "==": { - "type": "==", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "===": { - "type": "===", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">": { - "type": ">", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">=": { - "type": ">=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">>": { - "type": ">>", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - ">>=": { - "type": ">>=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "??": { - "type": "??", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "??=": { - "type": "??=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "^": { - "type": "^", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "^=": { - "type": "^=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "and": { - "type": "and", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "boolean": { - "type": "boolean", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "bottom_type": { - "type": "bottom_type", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "comment": { - "type": "comment", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "escape_sequence": { - "type": "escape_sequence", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "heredoc_end": { - "type": "heredoc_end", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "heredoc_start": { - "type": "heredoc_start", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "instanceof": { - "type": "instanceof", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "integer": { - "type": "integer", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "nowdoc_string": { - "type": "nowdoc_string", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "or": { - "type": "or", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "php_tag": { - "type": "php_tag", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "string_value": { - "type": "string_value", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "var_modifier": { - "type": "var_modifier", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "xor": { - "type": "xor", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "|": { - "type": "|", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "|=": { - "type": "|=", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - }, - "||": { - "type": "||", - "singleFieldNames": [], - "nodeTypeToMultipleFieldName": {}, - "multipleOrChildrenFieldNames": [] - } -} diff --git a/packages/tree-sitter-port/output/tree-sitter-php/meta.json b/packages/tree-sitter-port/output/tree-sitter-php/meta.json index 3470dad..53dd175 100644 --- a/packages/tree-sitter-port/output/tree-sitter-php/meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-php/meta.json @@ -1,5 +1,5 @@ { "name": "tree-sitter-php", - "version": "0.19.0", - "generatedAt": "2023-08-13T18:16:29.152Z" + "version": "0.22.5", + "generatedAt": "2024-06-26T15:42:10.851Z" } diff --git a/packages/tree-sitter-port/output/tree-sitter-php/parser.wasm b/packages/tree-sitter-port/output/tree-sitter-php/parser.wasm deleted file mode 100755 index bbfba40..0000000 Binary files a/packages/tree-sitter-port/output/tree-sitter-php/parser.wasm and /dev/null differ diff --git a/packages/tree-sitter-port/output/tree-sitter-python/fields-meta.json b/packages/tree-sitter-port/output/tree-sitter-python/fields-meta.json index 7c15652..db41dd9 100644 --- a/packages/tree-sitter-port/output/tree-sitter-python/fields-meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-python/fields-meta.json @@ -50,6 +50,7 @@ "type": "as_pattern", "singleFieldNames": ["alias"], "nodeTypeToMultipleFieldName": { + "case_pattern": "children", "as_pattern": "children", "boolean_operator": "children", "comparison_operator": "children", @@ -176,7 +177,8 @@ "pass_statement": "children", "print_statement": "children", "raise_statement": "children", - "return_statement": "children" + "return_statement": "children", + "type_alias_statement": "children" }, "multipleOrChildrenFieldNames": ["alternative", "children"] }, @@ -202,9 +204,33 @@ "type": "case_clause", "singleFieldNames": ["consequence", "guard"], "nodeTypeToMultipleFieldName": { - "case_pattern": "pattern" + "case_pattern": "children" }, - "multipleOrChildrenFieldNames": ["pattern"] + "multipleOrChildrenFieldNames": ["children"] + }, + "case_pattern": { + "type": "case_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "as_pattern": "children", + "class_pattern": "children", + "complex_pattern": "children", + "concatenated_string": "children", + "dict_pattern": "children", + "dotted_name": "children", + "false": "children", + "float": "children", + "integer": "children", + "keyword_pattern": "children", + "list_pattern": "children", + "none": "children", + "splat_pattern": "children", + "string": "children", + "true": "children", + "tuple_pattern": "children", + "union_pattern": "children" + }, + "multipleOrChildrenFieldNames": ["children"] }, "chevron": { "type": "chevron", @@ -247,10 +273,19 @@ }, "class_definition": { "type": "class_definition", - "singleFieldNames": ["body", "name", "superclasses"], + "singleFieldNames": ["body", "name", "superclasses", "type_parameters"], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "class_pattern": { + "type": "class_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "case_pattern": "children", + "dotted_name": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "comparison_operator": { "type": "comparison_operator", "singleFieldNames": [], @@ -294,6 +329,15 @@ }, "multipleOrChildrenFieldNames": ["operators", "children"] }, + "complex_pattern": { + "type": "complex_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "float": "children", + "integer": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "concatenated_string": { "type": "concatenated_string", "singleFieldNames": [], @@ -341,6 +385,14 @@ }, "multipleOrChildrenFieldNames": ["children"] }, + "constrained_type": { + "type": "constrained_type", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "type": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "continue_statement": { "type": "continue_statement", "singleFieldNames": [], @@ -440,6 +492,31 @@ }, "multipleOrChildrenFieldNames": ["children"] }, + "dict_pattern": { + "type": "dict_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "case_pattern": "value", + "splat_pattern": "children", + "-": "children", + "_": "children", + "class_pattern": "children", + "complex_pattern": "children", + "concatenated_string": "children", + "dict_pattern": "children", + "dotted_name": "children", + "false": "children", + "float": "children", + "integer": "children", + "list_pattern": "children", + "none": "children", + "string": "children", + "true": "children", + "tuple_pattern": "children", + "union_pattern": "children" + }, + "multipleOrChildrenFieldNames": ["value", "children"] + }, "dictionary": { "type": "dictionary", "singleFieldNames": [], @@ -797,7 +874,13 @@ }, "function_definition": { "type": "function_definition", - "singleFieldNames": ["body", "name", "parameters", "return_type"], + "singleFieldNames": [ + "body", + "name", + "parameters", + "return_type", + "type_parameters" + ], "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, @@ -819,6 +902,15 @@ }, "multipleOrChildrenFieldNames": ["children"] }, + "generic_type": { + "type": "generic_type", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children", + "type_parameter": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "global_statement": { "type": "global_statement", "singleFieldNames": [], @@ -912,6 +1004,29 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "keyword_pattern": { + "type": "keyword_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "class_pattern": "children", + "complex_pattern": "children", + "concatenated_string": "children", + "dict_pattern": "children", + "dotted_name": "children", + "false": "children", + "float": "children", + "identifier": "children", + "integer": "children", + "list_pattern": "children", + "none": "children", + "splat_pattern": "children", + "string": "children", + "true": "children", + "tuple_pattern": "children", + "union_pattern": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "keyword_separator": { "type": "keyword_separator", "singleFieldNames": [], @@ -988,6 +1103,7 @@ "type": "list_pattern", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "case_pattern": "children", "attribute": "children", "identifier": "children", "list_pattern": "children", @@ -1085,6 +1201,15 @@ }, "multipleOrChildrenFieldNames": ["subject"] }, + "member_type": { + "type": "member_type", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children", + "type": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "module": { "type": "module", "singleFieldNames": [], @@ -1112,7 +1237,8 @@ "pass_statement": "children", "print_statement": "children", "raise_statement": "children", - "return_statement": "children" + "return_statement": "children", + "type_alias_statement": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -1450,6 +1576,22 @@ }, "multipleOrChildrenFieldNames": ["children"] }, + "splat_pattern": { + "type": "splat_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "splat_type": { + "type": "splat_type", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "identifier": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "string": { "type": "string", "singleFieldNames": [], @@ -1465,6 +1607,7 @@ "type": "string_content", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "escape_interpolation": "children", "escape_sequence": "children" }, "multipleOrChildrenFieldNames": ["children"] @@ -1565,6 +1708,7 @@ "type": "tuple_pattern", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { + "case_pattern": "children", "attribute": "children", "identifier": "children", "list_pattern": "children", @@ -1574,42 +1718,19 @@ }, "multipleOrChildrenFieldNames": ["children"] }, - "type": { - "type": "type", + "type_alias_statement": { + "type": "type_alias_statement", "singleFieldNames": [], "nodeTypeToMultipleFieldName": { - "as_pattern": "children", - "boolean_operator": "children", - "comparison_operator": "children", - "conditional_expression": "children", - "lambda": "children", - "named_expression": "children", - "not_operator": "children", - "attribute": "children", - "await": "children", - "binary_operator": "children", - "call": "children", - "concatenated_string": "children", - "dictionary": "children", - "dictionary_comprehension": "children", - "ellipsis": "children", - "false": "children", - "float": "children", - "generator_expression": "children", - "identifier": "children", - "integer": "children", - "list": "children", - "list_comprehension": "children", - "list_splat": "children", - "none": "children", - "parenthesized_expression": "children", - "set": "children", - "set_comprehension": "children", - "string": "children", - "subscript": "children", - "true": "children", - "tuple": "children", - "unary_operator": "children" + "type": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "type_parameter": { + "type": "type_parameter", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "type": "children" }, "multipleOrChildrenFieldNames": ["children"] }, @@ -1635,6 +1756,36 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "union_pattern": { + "type": "union_pattern", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "class_pattern": "children", + "complex_pattern": "children", + "concatenated_string": "children", + "dict_pattern": "children", + "dotted_name": "children", + "false": "children", + "float": "children", + "integer": "children", + "list_pattern": "children", + "none": "children", + "splat_pattern": "children", + "string": "children", + "true": "children", + "tuple_pattern": "children", + "union_pattern": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, + "union_type": { + "type": "union_type", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": { + "type": "children" + }, + "multipleOrChildrenFieldNames": ["children"] + }, "while_statement": { "type": "while_statement", "singleFieldNames": ["alternative", "body", "condition"], @@ -1855,6 +2006,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "_": { + "type": "_", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "and": { "type": "and", "singleFieldNames": [], @@ -1867,6 +2024,12 @@ "nodeTypeToMultipleFieldName": {}, "multipleOrChildrenFieldNames": [] }, + "escape_interpolation": { + "type": "escape_interpolation", + "singleFieldNames": [], + "nodeTypeToMultipleFieldName": {}, + "multipleOrChildrenFieldNames": [] + }, "escape_sequence": { "type": "escape_sequence", "singleFieldNames": [], diff --git a/packages/tree-sitter-port/output/tree-sitter-python/meta.json b/packages/tree-sitter-port/output/tree-sitter-python/meta.json index 3a94bda..82f0b62 100644 --- a/packages/tree-sitter-port/output/tree-sitter-python/meta.json +++ b/packages/tree-sitter-port/output/tree-sitter-python/meta.json @@ -1,5 +1,5 @@ { "name": "tree-sitter-python", - "version": "0.20.3", - "generatedAt": "2023-08-13T18:16:21.498Z" + "version": "0.21.0", + "generatedAt": "2024-06-26T15:41:11.470Z" } diff --git a/packages/tree-sitter-port/output/tree-sitter-python/parser.wasm b/packages/tree-sitter-port/output/tree-sitter-python/parser.wasm index a7ac75e..132a88c 100755 Binary files a/packages/tree-sitter-port/output/tree-sitter-python/parser.wasm and b/packages/tree-sitter-port/output/tree-sitter-python/parser.wasm differ diff --git a/packages/tree-sitter-port/package.json b/packages/tree-sitter-port/package.json index a1712c9..237c5e7 100644 --- a/packages/tree-sitter-port/package.json +++ b/packages/tree-sitter-port/package.json @@ -26,7 +26,7 @@ "eslint": "^8.18.0", "tree-sitter-cli": "^0.20.8", "ts-node": "^10.9.1", - "typescript": "^4.7.4" + "typescript": "5.9.3" }, "dependencies": {} } diff --git a/packages/tree-sitter-port/src/buildWasmAndGenerateMappings.ts b/packages/tree-sitter-port/src/buildWasmAndGenerateMappings.ts index 4475a27..1b9ac05 100644 --- a/packages/tree-sitter-port/src/buildWasmAndGenerateMappings.ts +++ b/packages/tree-sitter-port/src/buildWasmAndGenerateMappings.ts @@ -6,7 +6,19 @@ import { logger as log } from './log' import fs from 'fs' import { prepareNodeTypes } from './prepareNodeTypes' -for (const parserSettings of parsersSettings) { +const userSelectedParsers = process.argv.slice(2) + +const selectedParsers = + userSelectedParsers.length > 0 + ? parsersSettings.filter(({ parserType, parserName }) => { + return ( + userSelectedParsers.includes(parserType) || + userSelectedParsers.includes(parserName) + ) + }) + : parsersSettings + +for (const parserSettings of selectedParsers) { const parserLogName = `${parserSettings.parserType} (${parserSettings.parserName})` const localLogger = log.info('Generating for ' + parserLogName) diff --git a/packages/tree-sitter-port/src/copyFiles.ts b/packages/tree-sitter-port/src/copyFiles.ts index 5bda1eb..939ad1f 100644 --- a/packages/tree-sitter-port/src/copyFiles.ts +++ b/packages/tree-sitter-port/src/copyFiles.ts @@ -4,7 +4,7 @@ import path from 'path' import { logger as log } from './log' import { ParserType } from '@codeque/core' -const parsersToCopy: Array = ['python'] +const parsersToCopy: Array = ['python', 'lua', 'csharp'] const filteredParserSettings = parsersSettings.filter(({ parserType }) => parsersToCopy.includes(parserType), diff --git a/packages/tree-sitter-port/src/settings.ts b/packages/tree-sitter-port/src/settings.ts index 603efc3..a500e30 100644 --- a/packages/tree-sitter-port/src/settings.ts +++ b/packages/tree-sitter-port/src/settings.ts @@ -26,6 +26,13 @@ export const parsersSettings: ParserSettings[] = [ nodeTypesLocation: 'src/node-types.json', buildWasmCommand: getWasmBuildCommand('tree-sitter-python'), nodeTypesToIgnore: [',', 'comment'], + conflictResolvers: [ + { + nodeType: 'dict_pattern', + fields: ['key', 'children'], + mergeToField: 'children', + }, + ], }, { parserType: 'babel', // temporary for test @@ -36,7 +43,7 @@ export const parsersSettings: ParserSettings[] = [ nodeTypesToIgnore: [], }, { - parserType: 'babel', // temporary for test + parserType: 'csharp', parserName: 'tree-sitter-c-sharp', repoUrl: 'https://github.com/tree-sitter/tree-sitter-c-sharp.git', nodeTypesLocation: 'src/node-types.json', @@ -44,15 +51,12 @@ export const parsersSettings: ParserSettings[] = [ nodeTypesToIgnore: [','], }, { - parserType: 'babel', // temporary for test + parserType: 'lua', // temporary for test parserName: 'tree-sitter-lua', - // TODO check other forks - // - https://github.com/tjdevries/tree-sitter-lua - // - https://github.com/MunifTanjim/tree-sitter-lua/blob/main/src/node-types.json - repoUrl: 'https://github.com/Azganoth/tree-sitter-lua.git', + repoUrl: 'https://github.com/MunifTanjim/tree-sitter-lua.git', nodeTypesLocation: 'src/node-types.json', buildWasmCommand: getWasmBuildCommand('tree-sitter-lua'), - nodeTypesToIgnore: [], + nodeTypesToIgnore: ["'", '"'], conflictResolvers: [ { nodeType: 'expression_list', diff --git a/packages/tree-sitter-port/src/upgradeParsers.ts b/packages/tree-sitter-port/src/upgradeParsers.ts index 67b3d7e..a52c5a7 100644 --- a/packages/tree-sitter-port/src/upgradeParsers.ts +++ b/packages/tree-sitter-port/src/upgradeParsers.ts @@ -3,7 +3,19 @@ import { execSync } from 'child_process' import path from 'path' import { logger as log } from './log' -for (const parserSettings of parsersSettings) { +const userSelectedParsers = process.argv.slice(2) + +const selectedParsers = + userSelectedParsers.length > 0 + ? parsersSettings.filter(({ parserType, parserName }) => { + return ( + userSelectedParsers.includes(parserType) || + userSelectedParsers.includes(parserName) + ) + }) + : parsersSettings + +for (const parserSettings of selectedParsers) { const parserLogName = `${parserSettings.parserType} (${parserSettings.parserName})` const localLogger = log.info('Fetching ' + parserLogName + ' parser') try { diff --git a/packages/vscode/.gitignore b/packages/vscode/.gitignore index 41bcfe0..cdbfa64 100644 --- a/packages/vscode/.gitignore +++ b/packages/vscode/.gitignore @@ -1,2 +1,4 @@ dist-webviews -*.vsix \ No newline at end of file +*.vsix +builds +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/packages/vscode/CHANGELOG.md b/packages/vscode/CHANGELOG.md deleted file mode 100644 index e593e9d..0000000 --- a/packages/vscode/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# Change Log - -All notable changes to the "codeque" extension will be documented in this file. - -Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. - -## [Unreleased] - -- Initial release \ No newline at end of file diff --git a/packages/vscode/InternalReadme.md b/packages/vscode/InternalReadme.md index af090a9..7a06c88 100644 --- a/packages/vscode/InternalReadme.md +++ b/packages/vscode/InternalReadme.md @@ -1,5 +1,7 @@ ## Development +Make sure to build core package first `yarn workspace @codeque/core build` + Run `yarn watch:extension` and `yarn watch:webviews` Open Vscode and run `Run extension` configuration in debugger @@ -8,13 +10,28 @@ While in VSCode with extension host run `> Reload Extension` to refresh webview To refresh extension backed re-run debugger configuration. +## Testing production build locally +Make sure to build core package first `yarn workspace @codeque/core build` + +Then change version in package.json to include `-local` suffix, eg. `0.35.1-local`. + +Otherwise vscode will confuse locally installed version and you won't be able to download published version with the same version code, unless you uninstall local version manually + +Package the extension into vsix file `cd packages/vscode && vsce package` + +Command runs checks, run webpack build and package extension into `vsix` (kind of archive file) + +You will get file `codeque-.vsix` + +The install extension from command pallette in vscode `cmd+p` -> `install from VSIX` -> select generated file -> Hit "Restart Extensions" button + ## Publish to official Visual Studio Code Marketplace Bump version manually in package.json And just run -`vsce publish` +`vsce publish -p ` `vsce` will automatically run pre-publish hooks from script `vscode:prepublish` to run checks and build package @@ -24,4 +41,4 @@ You might be asked to [get new PAT](https://code.visualstudio.com/api/working-wi Same procedure as above, but run -`ovsx publish` +`ovsx publish -p ` diff --git a/packages/vscode/README.md b/packages/vscode/README.md index 61d3d43..77078ef 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -1,3 +1,11 @@ + + + + +
+ + +

@@ -14,26 +22,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,33 +51,33 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
- + + ## Visual Studio Code Extension 🔮 + VScode extension aims to make your workflow more efficient. -It addresses the problems of standard search by providing multiline support and offers an easy way to add gaps or use wildcards in the query. +It addresses the problems of standard search by providing multiline support and offers an easy way to add gaps or use wildcards in the query. -You don't need to have any Regex knowledge to query complex code patterns. +You don't need to have any Regex knowledge to query complex code patterns. With CodeQue, you can easily navigate and modify your codebase, making your development process faster and more efficient. -It will help you with code refactoring, speed up project discovery, and make it easy to find duplicated or similar code patterns. +It will help you with code refactoring, speed up project discovery, and make it easy to find duplicated or similar code patterns. Advanced code search options and todo-like list of accurate search results will streamline your workflow. @@ -85,10 +93,12 @@ Advanced code search options and todo-like list of accurate search results will -## About +## About + One of the main strengths of CodeQue is its easy-to-use query language, but it also offers several additional features that make it a great support tool for your daily work. **Features** + - [Query language](#query-language) - [Search modes](#search-modes) - [Searching by file imports](#searching-by-file-imports) @@ -99,6 +109,7 @@ One of the main strengths of CodeQue is its easy-to-use query language, but it a - [Search errors](#search-errors) **Example Queries** + - [All usages of `console` object](#all-usages-of-console-object) - [Object with given key and value](#object-with-given-key-and-value) - [React component with specific props combination](#react-component-with-specific-props-combination) @@ -112,7 +123,7 @@ One of the main strengths of CodeQue is its easy-to-use query language, but it a ### Query language The beauty of CodeQue query language is that the query has to be valid source code. -You don't have to learn anything new! +You don't have to learn anything new! Except the fact there are a few types of wildcards. @@ -122,7 +133,7 @@ It matches all identifiers, JSX identifiers, types identifiers, function names a `$$$` is an statement/expression wildcard. -It matches any statement or expression. Think of it as 'match anything'. +It matches any statement or expression. Think of it as 'match anything'. There a few quirks there. It's good to have general understanding of how code is represented in AST (Abstract Syntax Tree) for more complex queries. More technically `$$$` wildcard is matching any node with all it's children. @@ -137,7 +148,7 @@ Strings have their's own wildcards #### Number wildcard -`0x0`- matches any number +`0x0`- matches any number Here is an example of query which finds all types of logs which includes word `test` in parameter 👇 @@ -148,6 +159,7 @@ Here is an example of query which finds all types of logs which includes word `t ### Search modes CodeQue offers the following search modes + - include - text - exact @@ -155,13 +167,13 @@ CodeQue offers the following search modes
-The most useful mode is `include`. As the name suggest the matched code has to include the code from query, but it can also contain other statements. It performs structural comparison. +The most useful mode is `include`. As the name suggest the matched code has to include the code from query, but it can also contain other statements. It performs structural comparison. [Learn more about `include` search mode](https://codeque.co/docs#include-search-mode)
-`text` search mode is good replacement of build-in vscode search. It acts like a normal text search, but it's big advantage is that it allows for matching multiline statements. It also offers it's own types of wildcards. +`text` search mode is good replacement of build-in vscode search. It acts like a normal text search, but it's big advantage is that it allows for matching multiline statements. It also offers it's own types of wildcards. [Learn more about `text` search mode](https://codeque.co/docs#include-search-mode) @@ -173,13 +185,13 @@ Sometimes you might want to find the code that matches exactly your query. Here
-Last but not least, `include-with-order` search mode can be useful in some rare cases. Same like `include` mode it matches code structurally and allows for missing parts, but in addition, it require the order to match. +Last but not least, `include-with-order` search mode can be useful in some rare cases. Same like `include` mode it matches code structurally and allows for missing parts, but in addition, it require the order to match. [Learn more about `include-with-order` search mode](https://codeque.co/docs#include-w-ith-order-search-mode)
-Here is the example of `include` mode matching function body containing statements from query 👇 +Here is the example of `include` mode matching function body containing statements from query 👇 @@ -220,6 +232,7 @@ You can define glob patters to either include or exclude files from the list. By default CodeQue is not searching in files ignored by `.gitignore` Enable the following flags with caution, as they might significantly downgrade search performance for lager projects. + - Search ignored files - Search `node_modules` (for most projects to search node_modules you have to also enable searching by ignored files) - Search files above 100kb (these are usually bundled files which are structurally heavy due to their size and amount of information) @@ -232,7 +245,7 @@ Example files list settings 👇 ### Case sensitivity -You can choose whether to compare identifier persisting their original case or do case insensitive match. +You can choose whether to compare identifier persisting their original case or do case insensitive match. ### Search errors @@ -244,7 +257,7 @@ You can check search error details in tooltip available after click the error co ## Query examples -CodeQue is general purpose code search tool. The examples list could be endless. Here are some of them for you to get a glimpse of what's possible. Those are relatively simple, you will definitely find some more complex during day to day work. +CodeQue is general purpose code search tool. The examples list could be endless. Here are some of them for you to get a glimpse of what's possible. Those are relatively simple, you will definitely find some more complex during day to day work. > Don't know how to write a query? [Open an issue on GitHub](https://github.com/codeque-co/codeque/issues) ! @@ -262,17 +275,18 @@ console.$$() CodeQue ability to match parts of the objects might be very useful, especially for searching patterns in large JSONs. -This query will match part of an object literal in file or JSON (depending on file extension) regardless of how deeply nested the object is in the structure. +This query will match part of an object literal in file or JSON (depending on file extension) regardless of how deeply nested the object is in the structure. More specifically it will match all objects with at least one address entry with country specified to `PL` and phone number which is non empty string. - ```ts -({ - addresses: [{ - country: 'PL' - }], - phoneNumber: "$$$" +;({ + addresses: [ + { + country: 'PL', + }, + ], + phoneNumber: '$$$', }) ``` @@ -283,11 +297,7 @@ More specifically it will match all objects with at least one address entry with I found it very useful to find props with specific props combination. Sometimes props depends on each other and we might want to refactor some of them, but how do we determine whether they are used together? We can review long list of results for basic code search, but who has time for that 😉 ```tsx - + + { + if (replaceInProgress) { + stopSearchOrReplace() + } else { + startReplace() + } + }} + onOptionSelect={setReplaceType} + options={[ + { + label: 'Replace', + value: 'replace', + }, + { + label: 'Quick Replace ⚡', + value: 'quick-replace', + }, + ]} + /> + ) } diff --git a/packages/vscode/src/webviews/SearchResultsPanel/components/SearchResult.tsx b/packages/vscode/src/webviews/SearchResultsPanel/components/SearchResult.tsx index 987fa90..1fb2c87 100644 --- a/packages/vscode/src/webviews/SearchResultsPanel/components/SearchResult.tsx +++ b/packages/vscode/src/webviews/SearchResultsPanel/components/SearchResult.tsx @@ -1,5 +1,6 @@ -import { Checkbox, Flex, IconButton } from '@chakra-ui/react' +import { Box, Checkbox, Flex, IconButton } from '@chakra-ui/react' import { MatchWithFileInfo } from '@codeque/core' +import { getMatchHighlightStyle } from '../../../codeHighlightSettings' import { memo, useEffect, useRef, useState } from 'react' import { HiOutlineChevronDown, HiOutlineChevronRight } from 'react-icons/hi' import { IoMdClose } from 'react-icons/io' @@ -7,10 +8,11 @@ import { CodeBlock } from '../../components/CodeBlock' import { darkTheme, lightTheme } from '../../components/codeHighlightThemes' import { DoubleClickButton } from '../../components/DoubleClickButton' import { useThemeType } from '../../components/useThemeType' -import { CopyPath } from './CopyPath' +import { CopyButton } from '../../components/CopyButton' import { FileLink } from './FileLink' import { usePreventScrollJump } from './usePreventScrollJump' import { getBorderColor, getIconButtonProps, groupHeaderHeight } from './utils' +import { zIndices } from '../../components/zIndices' type SearchResultProps = { match: MatchWithFileInfo @@ -19,19 +21,7 @@ type SearchResultProps = { hasGroup: boolean hasWorkspace: boolean scrollElRef: React.MutableRefObject -} - -const highlightColorOnLight = '#ddebf2' - -const highlightColorOnDark = '#35485b' - -const getMatchHighlightStyle = (isDark: boolean) => { - const highlightColor = isDark ? highlightColorOnDark : highlightColorOnLight - - return { - backgroundColor: highlightColor, - boxShadow: `0px 5px 0px ${highlightColor}, 0px -5px 0px ${highlightColor}`, - } + allMatchesLocations: Array } const removeWhiteSpaces = (str: string) => str.replace(/\s+/g, '') @@ -46,6 +36,7 @@ export const SearchResult = memo(function SearchResult({ hasGroup, hasWorkspace, scrollElRef, + allMatchesLocations, }: SearchResultProps) { const wrapperRef = useRef(null) const headingRef = useRef(null) @@ -127,6 +118,13 @@ export const SearchResult = memo(function SearchResult({ const fileExtension = getFileExtension(match.filePath) + /** + * replacing tabs with spaces fixes match highligh and improves code formatting + */ + const codeToRender = shouldDedentResult + ? extendedCodeFrameCode.replace(/\t/g, ' '.repeat(4)) + : extendedCodeFrameCode + return ( { @@ -160,7 +159,9 @@ export const SearchResult = memo(function SearchResult({ mr="2" /> { setIsResultFocused(true) @@ -170,7 +171,11 @@ export const SearchResult = memo(function SearchResult({ maxWidth="calc(100% - 150px)" /> - + + + + - {extendedCodeFrameCode} + {codeToRender} ) : null} diff --git a/packages/vscode/src/webviews/SearchResultsPanel/components/WorkspaceGroup.tsx b/packages/vscode/src/webviews/SearchResultsPanel/components/WorkspaceGroup.tsx index 1709413..efb95b6 100644 --- a/packages/vscode/src/webviews/SearchResultsPanel/components/WorkspaceGroup.tsx +++ b/packages/vscode/src/webviews/SearchResultsPanel/components/WorkspaceGroup.tsx @@ -2,6 +2,7 @@ import { Flex, IconButton } from '@chakra-ui/react' import { useRef, useState } from 'react' import { HiOutlineChevronDown, HiOutlineChevronRight } from 'react-icons/hi' import { IoMdClose } from 'react-icons/io' +import { zIndices } from '../../components/zIndices' import { darkTheme, lightTheme } from '../../components/codeHighlightThemes' import { DoubleClickButton } from '../../components/DoubleClickButton' import { useThemeType } from '../../components/useThemeType' @@ -48,7 +49,7 @@ export function WorkspaceGroup({ position="sticky" top="0px" backgroundColor="var(--vscode-editor-background)" - zIndex="2" + zIndex={zIndices.workspaceGroup} px="1" border="1px solid" borderColor={borderColor} diff --git a/packages/vscode/src/webviews/SearchResultsPanel/components/useParseQuery.ts b/packages/vscode/src/webviews/SearchResultsPanel/components/useParseQuery.ts new file mode 100644 index 0000000..20143e7 --- /dev/null +++ b/packages/vscode/src/webviews/SearchResultsPanel/components/useParseQuery.ts @@ -0,0 +1,138 @@ +//@ts-ignore +import { Mode, searchInStrings, __internal } from '@codeque/core/web' + +import { useCallback, useEffect, useState } from 'react' +import { SearchFileType } from '../../../types' +import { isQueryRestricted } from '../../../restrictedQueries' +import { fileTypeToParserMap } from '../../../utils' + +const getHostSystemFilesFetchBaseUrl = () => { + const mainScriptSrc = document + .getElementById('main-script') + ?.getAttribute('src') + + if (mainScriptSrc) { + return mainScriptSrc.split('/dist-webviews')[0] + } +} + +export type QueryParseError = { + text: string + location: { + line: number + column: number + } +} + +export type Hint = { + text: string + tokens: Array<{ content: string; type: string }> +} + +export function useParseQueryError() { + const [hostSystemFilesFetchBaseUrl, setHostSystemFilesFetchBaseUrl] = + useState('') + + useEffect(() => { + setHostSystemFilesFetchBaseUrl(getHostSystemFilesFetchBaseUrl() ?? '') + }, []) + + const parseQuery = useCallback( + async ({ + query, + mode, + fileType, + }: { + query: string + mode: Mode + fileType: SearchFileType + }): Promise<{ + error: QueryParseError | null + hint: Hint | null + }> => { + if (isQueryRestricted(query, fileType, mode)) { + return { + error: { + text: 'Query restricted for performance reasons', + location: { line: 0, column: 0 }, + }, + hint: null, + } + // Do not init parser until hostSystemFilesFetchBaseUrl is determined + } else if (hostSystemFilesFetchBaseUrl) { + const handleParse = async () => { + try { + const parser = fileTypeToParserMap[fileType] + + await __internal.parserSettingsMap[parser]().init?.( + hostSystemFilesFetchBaseUrl, + ) + + const matches = searchInStrings({ + queryCodes: [query], + files: [ + { + content: '', + path: 'file.ts', + }, + ], + mode, + parser, + }) + + const hint = matches.hints?.[0]?.[0] ?? null + + if (matches.errors.length > 0) { + console.error(matches.errors) + const error = matches.errors[0] + + // indicates query parse error + if (typeof error === 'object' && 'queryNode' in error) { + if (mode !== 'text' && hint) { + // Don't display error when there are hints available + + return { error: null, hint } + } else if (!error.error.text.includes('Empty query')) { + return { + error: { + text: error.error.text, + location: error.error.location, + }, + hint, + } + } + } else { + return { + error: { + text: error, + location: { line: 0, column: 0 }, + }, + hint, + } + } + } + + return { error: null, hint } + } catch (e) { + console.error('Query parse error', e) + + return { + error: { + text: 'Unknown parse error', + location: { line: 0, column: 0 }, + }, + hint: null, + } + } + } + + return handleParse() + } + + return { error: null, hint: null } + }, + [hostSystemFilesFetchBaseUrl], + ) + + return parseQuery +} diff --git a/packages/vscode/src/webviews/SearchResultsPanel/index.tsx b/packages/vscode/src/webviews/SearchResultsPanel/index.tsx index df9f21b..9eb1b64 100644 --- a/packages/vscode/src/webviews/SearchResultsPanel/index.tsx +++ b/packages/vscode/src/webviews/SearchResultsPanel/index.tsx @@ -7,14 +7,34 @@ import { useEffect, useState, useCallback, useMemo, useRef } from 'react' import ReactDOM from 'react-dom/client' import { Providers } from '../components/Providers' import { QueryEditor } from './components/QueryEditor' -import { StateShape, SearchFileType } from '../../StateManager' +import { SearchStateShape } from '../../SearchStateManager' +import { ReplaceMode, ReplaceType, SearchFileType } from '../../types' + import { SearchResultsList } from './components/SearchResults' -import { Flex, Spinner } from '@chakra-ui/react' +import { + Button, + Flex, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + List, + ListItem, + Link, + UnorderedList, +} from '@chakra-ui/react' import { ResultsMeta } from './components/ResultsMeta' import { ExtendedSearchResults } from 'types' import { eventBusInstance } from '../../EventBus' import { simpleDebounce } from '../../utils' import { Matches, Mode } from '@codeque/core' +import { ReplacementEditor } from './components/ReplacementEditor' +import { Banners } from './components/Banners' +import { SearchInFileError } from '../../../../core/src/types' //@ts-ignore - Add typings const vscode = acquireVsCodeApi() @@ -34,37 +54,60 @@ const Panel = () => { null, ) const [query, setQuery] = useState(null) + const [replacement, setReplacement] = useState(null) + const [fileType, setFileType] = useState(null) + const [replaceMode, setReplaceMode] = useState(null) + const [replaceType, setReplaceTypeLocal] = useState(null) const [nextSearchIsFromSelection, setNextSearchIsFromSelection] = useState(false) const [mode, setMode] = useState(null) const [hasQueryError, setHasQueryError] = useState(false) + const [initialSettingsReceived, setInitialSettingsReceived] = useState(false) const [results, setResults] = useState( undefined, ) + const [replacementErrors, setReplacementErrors] = useState< + SearchInFileError[] + >([]) + const [time, setTime] = useState(undefined) const [filesList, setFilesList] = useState(undefined) - const [isLoading, setIsLoading] = useState(false) + const [isSearching, setIsSearching] = useState(false) + const [isReplacing, setIsReplacing] = useState(false) + const [displayLimit, setDisplayLimit] = useState(50) const [isWorkspace, setIsWorkspace] = useState(false) + const [proModalVisible, setProModalVisible] = useState(false) const selectedText = useRef(null) - const handleSettingsChanged = useCallback((data: Partial) => { - if (data.mode !== undefined) { - setMode(data.mode) - } + const handleSettingsChanged = useCallback( + (data: Partial) => { + if (data.mode !== undefined) { + setMode(data.mode) + } - if (data.fileType !== undefined) { - setFileType(data.fileType) - } - }, []) + if (data.fileType !== undefined) { + setFileType(data.fileType) + } - const handleInitialSettings = useCallback((data: StateShape) => { + if (data.replaceMode !== undefined) { + setReplaceMode(data.replaceMode) + } + + if (data.replaceType !== undefined) { + setReplaceTypeLocal(data.replaceType) + } + }, + [], + ) + + const handleInitialSettings = useCallback((data: SearchStateShape) => { setInitialSettingsReceived(true) if (data.query !== undefined) { @@ -72,6 +115,10 @@ const Panel = () => { setQuery(data.query) } + if (data.replacement !== undefined) { + setReplacement(data.replacement) + } + handleSettingsChanged(data) }, []) @@ -79,7 +126,7 @@ const Panel = () => { setResults(data.results) setTime(data.time) setFilesList(data.files) - setIsLoading(false) + setIsSearching(false) setDisplayLimit(defaultDisplayLimit) setNextSearchIsFromSelection(false) setIsWorkspace(data.isWorkspace) @@ -113,16 +160,33 @@ const Panel = () => { }, []) const handleSearchStart = useCallback((query: string) => { - setIsLoading(true) + setIsSearching(true) setResults(undefined) setFilesList([]) setLastSearchedQuery(query) + setReplacementErrors([]) }, []) + const handleReplaceStart = useCallback(() => { + setIsReplacing(true) + setReplacementErrors([]) + }, []) + + const handleReplaceFinished = useCallback(({ time }: { time: number }) => { + setIsReplacing(false) + }, []) + + const handleReplaceErrors = useCallback( + ({ errors }: { errors: SearchInFileError[] }) => { + setReplacementErrors(errors) + }, + [], + ) + const startSearch = useCallback( (useSelectionIfAvailable = false) => { if (selectedText.current && useSelectionIfAvailable) { - eventBusInstance.dispatch('set-settings', { + eventBusInstance.dispatch('set-search-settings', { query: selectedText.current, }) @@ -135,6 +199,37 @@ const Panel = () => { [selectedText], ) + const showProModal = () => { + setProModalVisible(true) + } + + const closeProModal = () => { + setProModalVisible(false) + eventBusInstance.dispatch('pro-modal:closed') + } + + const ctaClickProModal = () => { + setProModalVisible(false) + eventBusInstance.dispatch('pro-modal:subscribe_clicked') + } + + const nameClickProModal = () => { + eventBusInstance.dispatch('pro-modal:twitter_handler_clicked') + } + + const startReplace = useCallback(() => { + eventBusInstance.dispatch('start-replace') + showProModal() + }, [selectedText]) + + const setReplaceType = useCallback((replaceType: ReplaceType) => { + setReplaceTypeLocal(replaceType) + + eventBusInstance.dispatch('set-search-settings', { + replaceType, + }) + }, []) + const handleQueryChangeDebounced = useMemo( () => simpleDebounce((query: string, hasQueryError: boolean) => { @@ -147,6 +242,14 @@ const Panel = () => { [startSearch], ) + const handleReplacementChangeDebounced = useMemo( + () => + simpleDebounce((replacement: string) => { + eventBusInstance.dispatch('set-replacement-in-settings', replacement) + }, 400), + [], + ) + useEffect(() => { eventBusInstance.env = 'search-results' window.addEventListener('message', eventBusInstance.pipeFromWindowMessage) @@ -166,12 +269,26 @@ const Panel = () => { }, []) useEffect(() => { - eventBusInstance.addListener('settings-changed', handleSettingsChanged) - eventBusInstance.addListener('initial-settings', handleInitialSettings) + eventBusInstance.addListener( + 'search-settings-changed', + handleSettingsChanged, + ) + + eventBusInstance.addListener( + 'initial-search-settings', + handleInitialSettings, + ) return () => { - eventBusInstance.removeListener('settings-changed', handleSettingsChanged) - eventBusInstance.removeListener('initial-settings', handleInitialSettings) + eventBusInstance.removeListener( + 'search-settings-changed', + handleSettingsChanged, + ) + + eventBusInstance.removeListener( + 'initial-search-settings', + handleInitialSettings, + ) } }, [handleSettingsChanged]) @@ -220,6 +337,30 @@ const Panel = () => { } }, [handleSearchStart]) + useEffect(() => { + eventBusInstance.addListener('replace-started', handleReplaceStart) + + return () => { + eventBusInstance.removeListener('replace-started', handleReplaceStart) + } + }, [handleSearchStart]) + + useEffect(() => { + eventBusInstance.addListener('replace-finished', handleReplaceFinished) + + return () => { + eventBusInstance.removeListener('replace-finished', handleReplaceFinished) + } + }, [handleSearchStart]) + + useEffect(() => { + eventBusInstance.addListener('replace-errors', handleReplaceErrors) + + return () => { + eventBusInstance.removeListener('replace-errors', handleReplaceErrors) + } + }, [handleSearchStart]) + useEffect(() => { eventBusInstance.addListener('set-query-on-ui', setQuery) @@ -261,6 +402,12 @@ const Panel = () => { } }, [lastSearchedQuery, query, hasQueryError, nextSearchIsFromSelection]) + useEffect(() => { + if (initialSettingsReceived && replacement !== null) { + handleReplacementChangeDebounced(replacement) + } + }, [initialSettingsReceived, replacement]) + useEffect(() => { const handleSelectionChangeDebounced = simpleDebounce(() => { let text = window?.getSelection()?.toString() ?? null @@ -274,7 +421,7 @@ const Panel = () => { if (text !== selectedText.current) { selectedText.current = text - eventBusInstance.dispatch('set-settings', { + eventBusInstance.dispatch('set-search-settings', { webviewTextSelection: text, }) } @@ -345,36 +492,80 @@ const Panel = () => { [results, getWorkspace], ) - const stopSearch = useCallback(() => { + const stopSearchOrReplace = useCallback(() => { eventBusInstance.dispatch('stop-search') }, []) + const allErrors = useMemo(() => { + return [...(results?.errors ?? []), ...replacementErrors] + }, [replacementErrors, results?.errors]) + + const subscribeLinkRef = useRef() + const nameLinkRef = useRef() + return ( - - {query !== null && fileType !== null ? ( - + + {query !== null && fileType !== null ? ( + + ) : null} + {replacement !== null && fileType !== null && replaceMode !== null ? ( + + ) : null} + + {fileType !== null && mode !== null && replaceType !== null && ( + - ) : null} - - + )} + + {/* This link is hidden and we click it imperatively. For some reason clicking link inside modal does not work */} + + Subscribe to book 17€* early bird price 💸 + + + Jakub Twitter account + { isWorkspace={isWorkspace} /> + + + + + + ✨ CodeQue Pro is coming ✨ + + + + Hey 👋{' '} + { + nameClickProModal() + nameLinkRef.current?.click() + }} + textDecoration="underline" + > + Jakub + {' '} + here. + + + I'm finalizing work on first release of CodeQue Pro! + + + Pro version will be packed with handful of useful features: + + + + Code replace with meta variables + + Search history + Multiple searches grouped in tabs + Boolean conditions and nested searches + Bookmarking Search results + Editing code directly in results + Additional search results list in sidebar + Other UX improvements + + + Features will be released one by one to assure quality. + + + Regular price of the extension{' '} + will be 37€ for perpetual license with 1 year + of updates. + + + By subscribing to CodeQue newsletter you will get{' '} + -63% discount price of 17€*! + + + Discount code will be send to all subscribers at the release + day. + + * Local tax applicable + + + + + + + + ) } diff --git a/packages/vscode/src/webviews/SearchResultsPanel/utils.ts b/packages/vscode/src/webviews/SearchResultsPanel/utils.ts index 62310db..d368f0f 100644 --- a/packages/vscode/src/webviews/SearchResultsPanel/utils.ts +++ b/packages/vscode/src/webviews/SearchResultsPanel/utils.ts @@ -3,7 +3,8 @@ import { eventBusInstance } from '../../EventBus' export const openFile = (data: { filePath: string - location?: Match['loc'] + locationsToSelect?: Array + locationsToDecorate?: Array }) => { eventBusInstance.dispatch('open-file', data) } diff --git a/packages/vscode/src/webviews/Sidebar/components/SearchSettings.tsx b/packages/vscode/src/webviews/Sidebar/components/SearchSettings.tsx index 796e32b..82858ac 100644 --- a/packages/vscode/src/webviews/Sidebar/components/SearchSettings.tsx +++ b/packages/vscode/src/webviews/Sidebar/components/SearchSettings.tsx @@ -8,20 +8,23 @@ import { Stack, Text, Link, + Badge, + Tooltip, } from '@chakra-ui/react' import Creatable from 'react-select/creatable' import { Mode } from '@codeque/core' import { ChangeEvent, useCallback, useEffect, useMemo, useState } from 'react' import { eventBusInstance } from '../../../EventBus' -import { StateShape } from '../../../StateManager' -import { CaseType } from '../../../types' +import { SearchStateShape } from '../../../SearchStateManager' +import { CaseType, ReplaceMode } from '../../../types' import { reactSelectStyles } from '../../components/reactSelectStyles' import { simpleDebounce } from '../../../utils' type SearchSettingsProps = { - initialSettings: StateShape - setSettings: (settings: Partial) => void + initialSettings: SearchStateShape + setSearchSettings: (settings: Partial) => void + setReplaceSettings: (settings: Pick) => void resultsPanelVisible: boolean } type Options = { value: string; label: string }[] @@ -37,10 +40,13 @@ const getValuesFromOptions = (options: Options) => export function SearchSettings({ initialSettings, - setSettings, + setSearchSettings, + setReplaceSettings, resultsPanelVisible, }: SearchSettingsProps) { const [mode, setMode] = useState(initialSettings?.mode) + const [replaceMode, setReplaceMode] = useState(initialSettings?.replaceMode) + const [fileType, setFileType] = useState(initialSettings?.fileType) const [caseType, setCase] = useState(initialSettings?.caseType) @@ -69,6 +75,10 @@ export function SearchSettings({ setMode(initialSettings.mode) } + if (initialSettings.replaceMode !== undefined) { + setReplaceMode(initialSettings.replaceMode) + } + if (initialSettings.fileType !== undefined) { setFileType(initialSettings.fileType) } @@ -102,45 +112,72 @@ export function SearchSettings({ } }, [initialSettings]) - const handleModeChange = useCallback( + const handleSearchModeChange = useCallback( (mode: Mode) => { + let newReplaceMode = replaceMode + + if (newReplaceMode === 'merge-code' && mode !== 'include-with-order') { + newReplaceMode = 'text' + } + setMode(mode) + setReplaceMode(newReplaceMode) - setSettings({ + setSearchSettings({ mode, + replaceMode: newReplaceMode, + }) + }, + [setSearchSettings, replaceMode, fileType], + ) + + const handleReplaceModeChange = useCallback( + (replaceMode: ReplaceMode) => { + setReplaceMode(replaceMode) + + setReplaceSettings({ + replaceMode, }) }, - [setSettings], + [setSearchSettings], ) const handleFileTypeChange = useCallback( - (fileType: StateShape['fileType']) => { - let newMode = mode + (fileType: SearchStateShape['fileType']) => { + let newSearchMode = mode + let newReplaceMode = replaceMode if (fileType === 'all') { - newMode = 'text' + newSearchMode = 'text' + newReplaceMode = 'text' + } + + if (newReplaceMode === 'merge-code' && fileType !== 'js-ts-json') { + newReplaceMode = 'text' } setFileType(fileType) - setMode(newMode) + setMode(newSearchMode) + setReplaceMode(newReplaceMode) - setSettings({ + setSearchSettings({ fileType, - mode: newMode, + mode: newSearchMode, + replaceMode: newReplaceMode, }) }, - [setSettings, mode], + [setSearchSettings, mode, replaceMode], ) const handleCaseChange = useCallback( (caseType: CaseType) => { setCase(caseType) - setSettings({ + setSearchSettings({ caseType, }) }, - [setSettings], + [setSearchSettings], ) const handleSearchNodeModulesChange = useCallback( @@ -148,11 +185,11 @@ export function SearchSettings({ const checked = ev.target.checked setSearchNodeModules(checked) - setSettings({ + setSearchSettings({ searchNodeModules: checked, }) }, - [setSettings], + [setSearchSettings], ) const handleSearchIgnoredFilesChange = useCallback( @@ -160,11 +197,11 @@ export function SearchSettings({ const checked = ev.target.checked setSearchIgnoredFiles(checked) - setSettings({ + setSearchSettings({ searchIgnoredFiles: checked, }) }, - [setSettings], + [setSearchSettings], ) const handleSearchBigFiles = useCallback( @@ -172,11 +209,11 @@ export function SearchSettings({ const checked = ev.target.checked setSearchBigFiles(checked) - setSettings({ + setSearchSettings({ searchBigFiles: checked, }) }, - [setSettings], + [setSearchSettings], ) const handleIncludeChange = useCallback( @@ -184,11 +221,11 @@ export function SearchSettings({ setInclude(options) const include = getValuesFromOptions(options) - setSettings({ + setSearchSettings({ include, }) }, - [setSettings], + [setSearchSettings], ) const handleExcludeChange = useCallback( @@ -196,21 +233,21 @@ export function SearchSettings({ setExclude(options) const exclude = getValuesFromOptions(options) - setSettings({ + setSearchSettings({ exclude, }) }, - [setSettings], + [setSearchSettings], ) const setSettingsEntryPointDebounced = useMemo( () => simpleDebounce((entryPoint: string) => { - setSettings({ + setSearchSettings({ entryPoint: entryPoint.length > 0 ? entryPoint : null, }) }, 800), - [setSettings], + [setSearchSettings], ) const handleEntryPointChange = useCallback( @@ -220,7 +257,7 @@ export function SearchSettings({ setEntryPoint(entryPoint) setSettingsEntryPointDebounced(entryPoint) }, - [setSettings, setSettingsEntryPointDebounced], + [setSearchSettings, setSettingsEntryPointDebounced], ) const showResultsPanel = () => { @@ -241,7 +278,23 @@ export function SearchSettings({ } as const) : {} + const mergeCodeReplacementEnabled = + fileType === 'js-ts-json' && mode === 'include-with-order' + + const mergeCodeReplacementCursorProps = !mergeCodeReplacementEnabled + ? ({ + cursor: 'not-allowed', + } as const) + : {} + const mergeCodeReplacementProps = !mergeCodeReplacementEnabled + ? ({ + pointerEvents: 'none', + opacity: '0.6', + } as const) + : {} + return ( + //@ts-ignore {!resultsPanelVisible && ( Python + + Lua + + + C# + - Mode: + Search Mode: - + + + Replace Mode: + + + + + + text + + + + + + + merge code{' '} + + Alpha + + + + + + + + + Case: diff --git a/packages/vscode/src/webviews/Sidebar/index.tsx b/packages/vscode/src/webviews/Sidebar/index.tsx index 4cdcd99..ad024f9 100644 --- a/packages/vscode/src/webviews/Sidebar/index.tsx +++ b/packages/vscode/src/webviews/Sidebar/index.tsx @@ -3,26 +3,38 @@ import { useEffect, useCallback, useState } from 'react' import { Providers } from '../components/Providers' import { SearchSettings } from './components/SearchSettings' import { eventBusInstance } from '../../EventBus' -import { StateShape } from '../../StateManager' +import { SearchStateShape } from '../../SearchStateManager' //@ts-ignore - Add typings const vscode = acquireVsCodeApi() const Sidebar = () => { const [resultsPanelVisible, setResultsPanelVisible] = useState(true) - const [initialSettings, setInitialSettings] = useState( - null, + const [initialSettings, setInitialSettings] = + useState(null) + + const setSearchSettings = useCallback( + (settings: Partial) => { + eventBusInstance.dispatch('set-search-settings', settings) + eventBusInstance.dispatch('start-search') + }, + [], ) - const setSettings = useCallback((settings: Partial) => { - eventBusInstance.dispatch('set-settings', settings) - eventBusInstance.dispatch('start-search') - }, []) + const setReplaceSettings = useCallback( + (settings: Partial) => { + eventBusInstance.dispatch('set-search-settings', settings) + }, + [], + ) - const handleInitialSettings = useCallback((data: Partial) => { - setInitialSettings( - (prevSettings) => ({ ...prevSettings, ...data } as StateShape), - ) - }, []) + const handleInitialSettings = useCallback( + (data: Partial) => { + setInitialSettings( + (prevSettings) => ({ ...prevSettings, ...data } as SearchStateShape), + ) + }, + [], + ) const handleResultsPanelVisibilityChange = useCallback((data: boolean) => { setResultsPanelVisible(data) @@ -49,12 +61,26 @@ const Sidebar = () => { }, []) useEffect(() => { - eventBusInstance.addListener('initial-settings', handleInitialSettings) - eventBusInstance.addListener('settings-changed', handleInitialSettings) + eventBusInstance.addListener( + 'initial-search-settings', + handleInitialSettings, + ) + + eventBusInstance.addListener( + 'search-settings-changed', + handleInitialSettings, + ) return () => { - eventBusInstance.removeListener('initial-settings', handleInitialSettings) - eventBusInstance.removeListener('settings-changed', handleInitialSettings) + eventBusInstance.removeListener( + 'initial-search-settings', + handleInitialSettings, + ) + + eventBusInstance.removeListener( + 'search-settings-changed', + handleInitialSettings, + ) } }, [handleInitialSettings]) @@ -77,7 +103,8 @@ const Sidebar = () => { {initialSettings && ( )} diff --git a/packages/vscode/src/webviews/components/ButtonWithOptionSelect.tsx b/packages/vscode/src/webviews/components/ButtonWithOptionSelect.tsx new file mode 100644 index 0000000..126ce97 --- /dev/null +++ b/packages/vscode/src/webviews/components/ButtonWithOptionSelect.tsx @@ -0,0 +1,99 @@ +import { + Flex, + Button, + ButtonProps, + Menu, + MenuButton, + MenuList, + MenuItem, +} from '@chakra-ui/react' +import { HiOutlineChevronDown } from 'react-icons/hi' + +export type ButtonWithOptionSelectProps = Pick< + ButtonProps, + 'colorScheme' | 'size' | 'loadingText' | 'isLoading' | 'disabled' +> & { + selectedOptionValue: string + options: Array<{ label: string; value: T }> + onClick: () => void + onOptionSelect: (value: T) => void +} + +export function ButtonWithOptionSelect({ + onClick, + onOptionSelect, + selectedOptionValue, + colorScheme, + size, + options, + loadingText, + disabled, + isLoading, +}: ButtonWithOptionSelectProps) { + const colors = { + menuItemBgColor: `${colorScheme}.500`, + menuItemBgColorActive: `${colorScheme}.700`, + } + + const selectedOptionLabel = options.find( + (option) => option.value === selectedOptionValue, + ) + + return ( + // @ts-ignore + + + + {({ isOpen }) => ( + <> + {/* @ts-ignore */} + + + + + {options.map((option) => ( + onOptionSelect(option.value)} + > + {option.label} + + ))} + + + )} + + + ) +} diff --git a/packages/vscode/src/webviews/components/CopyButton.tsx b/packages/vscode/src/webviews/components/CopyButton.tsx new file mode 100644 index 0000000..703b22d --- /dev/null +++ b/packages/vscode/src/webviews/components/CopyButton.tsx @@ -0,0 +1,38 @@ +import { IconButton, Tooltip } from '@chakra-ui/react' +import { MdContentCopy } from 'react-icons/md' +import { darkTheme, lightTheme } from './codeHighlightThemes' +import { useThemeType } from './useThemeType' +import { getIconButtonProps } from '../SearchResultsPanel/components/utils' +import { useCopyToClipboard } from './useCopyToClipboard' + +type CopyButtonProps = { + value: string + ariaLabel: string + onCopyText?: string +} + +export function CopyButton({ + value, + ariaLabel, + onCopyText = 'Copied to clipboard!', +}: CopyButtonProps) { + const themeType = useThemeType() + const isDarkTheme = themeType === 'dark' + const highlightTheme = isDarkTheme ? darkTheme : lightTheme + + const iconButtonStyleResetProps = getIconButtonProps( + highlightTheme.plain.backgroundColor, + ) + const [hasCopiedValue, copyValue] = useCopyToClipboard(value) + + return ( + + } + {...iconButtonStyleResetProps} + onClick={copyValue} + /> + + ) +} diff --git a/packages/vscode/src/webviews/components/Highlight.tsx b/packages/vscode/src/webviews/components/Highlight.tsx index c4f52e9..c26ad01 100644 --- a/packages/vscode/src/webviews/components/Highlight.tsx +++ b/packages/vscode/src/webviews/components/Highlight.tsx @@ -1,8 +1,9 @@ import PrismHighlight from 'prism-react-renderer' import { defaultProps, PrismTheme } from 'prism-react-renderer' -import React from 'react' +import React, { useState } from 'react' import { darkTheme } from './codeHighlightThemes' import { getLanguageBasedOnFileExtension } from './getLanguageBasedOnFileExtension' +import { CopyButton } from './CopyButton' type Token = { types: string[]; content: string } @@ -50,6 +51,8 @@ export function Highlight({ return {children} } + const [hoveredLine, setHoveredLine] = useState(null) + const highlightLanguage = getLanguageBasedOnFileExtension(fileExtension) return ( @@ -63,7 +66,7 @@ export function Highlight({ {({ className, style, tokens, getLineProps, getTokenProps }) => ( <> {tokens.map((line, lineIdx) => { - const showLineNumber = + const computedLineNumber = startLineNumber !== undefined ? lineIdx + startLineNumber : undefined @@ -79,6 +82,7 @@ export function Highlight({ lineNumToCompareHighlight === highlight.line ) })?.style + const isLineHovered = computedLineNumber === hoveredLine return (
setHoveredLine(computedLineNumber ?? null)} + onMouseLeave={() => setHoveredLine(null)} > - {showLineNumber !== undefined ? ( + {computedLineNumber !== undefined ? ( - {showLineNumber} + {computedLineNumber} +
+ token.content).join('')} + onCopyText="Line copied!" + /> +
) : null} {line.map((token, key) => { diff --git a/packages/vscode/src/webviews/components/useThemeType.tsx b/packages/vscode/src/webviews/components/useThemeType.tsx index 5484892..5a7fd2d 100644 --- a/packages/vscode/src/webviews/components/useThemeType.tsx +++ b/packages/vscode/src/webviews/components/useThemeType.tsx @@ -30,7 +30,7 @@ export const ThemeTypeProvider = (props: { children: React.ReactNode }) => { observer.observe(document.body, { attributes: true, - attributeFilter: [themeAttr] + attributeFilter: [themeAttr], }) }, []) diff --git a/packages/vscode/src/webviews/components/zIndices.ts b/packages/vscode/src/webviews/components/zIndices.ts new file mode 100644 index 0000000..8588848 --- /dev/null +++ b/packages/vscode/src/webviews/components/zIndices.ts @@ -0,0 +1,6 @@ +export const zIndices = { + searchResult: 1 as const, + fileGroup: 2 as const, + workspaceGroup: 3 as const, + replaceButtonMenu: 4 as const, +} diff --git a/packages/vscode/tsconfig.json b/packages/vscode/tsconfig.json index 0508029..115e97a 100644 --- a/packages/vscode/tsconfig.json +++ b/packages/vscode/tsconfig.json @@ -4,7 +4,8 @@ "baseUrl": "./src", "skipLibCheck": true, "declaration": false, - "jsx": "react-jsx" + "jsx": "react-jsx", + "incremental": true }, "exclude": ["dist", "dist-webviews", "node_modules", "media", "webpack.*"] } diff --git a/packages/vscode/webpack.extension.config.js b/packages/vscode/webpack.extension.config.js index 393dfca..6047c3f 100644 --- a/packages/vscode/webpack.extension.config.js +++ b/packages/vscode/webpack.extension.config.js @@ -59,6 +59,9 @@ module.exports = (env, argv) => { use: [ { loader: 'ts-loader', + options: { + transpileOnly: true, + }, }, ], }, diff --git a/packages/vscode/webpack.webviews.config.js b/packages/vscode/webpack.webviews.config.js index 48b7db3..45b52b2 100644 --- a/packages/vscode/webpack.webviews.config.js +++ b/packages/vscode/webpack.webviews.config.js @@ -13,7 +13,14 @@ module.exports = { rules: [ { test: /\.tsx?$/, - use: 'ts-loader', + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true, + }, + }, + ], exclude: /node_modules/, }, ], diff --git a/readmePartials/hero.md b/readmePartials/hero.md index 43f0130..f5ba5fc 100644 --- a/readmePartials/hero.md +++ b/readmePartials/hero.md @@ -1,3 +1,5 @@ + +

@@ -14,26 +16,26 @@

Find and lint complex code patterns effortlessly

-___ +--- # What is CodeQue? -CodeQue is semantic code search engine that understands the code syntax. +CodeQue is semantic code search engine that understands the code syntax. It matches code structurally which makes it excellent for more complex queries. -Query language offers wildcards, partial matching and ignores code formatting. +Query language offers wildcards, partial matching and ignores code formatting. -Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python and more soon. +Structural code search is available for JavaScript, TypesScript, HTML, CSS, Python, Lua, C# and more soon. -Text code search with handy wildcards is available for __every language__ and covers common regex search use cases. +Text code search with handy wildcards is available for **every language** and covers common regex search use cases.

Give it a try in playground

Just paste code snippet to start searching, no installation needed!

-__Integrations__ +**Integrations** CodeQue is available as: @@ -43,18 +45,16 @@ CodeQue is available as:

All CodeQue tools work offline hence code never leaves your local environment.

-__Coming soon__ +**Coming soon** CodeQue will be soon available as: - Duplicated code identification -- Batch code refactoring -- Advanced ESLint rule creator - +- Batch code refactoring +- Advanced ESLint rule creator

🔔 Get notified about updates 🔔

-
- \ No newline at end of file + diff --git a/syncReadmes.js b/syncReadmes.js index bfafb17..c7f59eb 100644 --- a/syncReadmes.js +++ b/syncReadmes.js @@ -22,15 +22,21 @@ const syncHero = () => { const heroContent = fs.readFileSync(heroContentPath).toString() + const heroStartCommentLine = '' + + const heroEndCommentLine = '' + pathsToUpdate.forEach((filePath) => { const content = fs.readFileSync(filePath).toString() - const heroEndCommentLine = '' + const contentBeforeHero = content.split(heroStartCommentLine)[0] const contentAfterHero = content.split(heroEndCommentLine)[1] - if (contentAfterHero) { - const newContent = `${heroContent.trim()} + if (contentAfterHero || contentBeforeHero) { + const newContent = `${contentBeforeHero.trimEnd()} + +${heroContent.trim()} ${contentAfterHero.trimStart()}` diff --git a/yarn.lock b/yarn.lock index 4f3e2a0..98850cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@aashutoshrathi/word-wrap@^1.2.3": version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@angular-eslint/bundled-angular-compiler@15.2.1": @@ -163,6 +163,15 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/eslint-parser@7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz#0b8883a4a1c2cbed7b3cd9d7765d80e8f480b9ae" + integrity sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + "@babel/eslint-parser@^7.21.8": version "7.21.8" resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz" @@ -172,6 +181,17 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" +"@babel/generator@7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== + dependencies: + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/generator@^7.16.0", "@babel/generator@^7.7.2": version "7.16.0" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz" @@ -181,16 +201,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz" - integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== - dependencies: - "@babel/types" "^7.21.4" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - "@babel/helper-annotate-as-pure@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz" @@ -322,15 +332,15 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-plugin-utils@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz" - integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== "@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4": version "7.16.4" @@ -372,35 +382,25 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== "@babel/helper-validator-option@^7.14.5": version "7.14.5" @@ -426,7 +426,7 @@ "@babel/traverse" "^7.16.3" "@babel/types" "^7.16.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0", "@babel/highlight@^7.16.7", "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== @@ -435,34 +435,18 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== +"@babel/parser@7.28.5", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" + "@babel/types" "^7.28.5" -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@7.19.4": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3", "@babel/parser@^7.7.2": version "7.19.4" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz" integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3", "@babel/parser@^7.7.2": - version "7.16.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": version "7.16.2" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz" @@ -726,20 +710,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@7.18.6": +"@babel/plugin-syntax-typescript@7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-typescript@^7.16.0", "@babel/plugin-syntax-typescript@^7.7.2": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-typescript@^7.16.0", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz" - integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-transform-arrow-functions@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz" @@ -1097,7 +1081,7 @@ "@babel/helper-validator-option" "^7.14.5" "@babel/plugin-transform-typescript" "^7.16.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.7.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.18.6" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz" integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== @@ -1111,13 +1095,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.8.4": - version "7.16.3" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.16.0", "@babel/template@^7.3.3": version "7.16.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz" @@ -1142,7 +1119,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@7.19.4": +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.4" resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== @@ -1151,31 +1128,13 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.16.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.6": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz" - integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== +"@babel/types@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1734,24 +1693,9 @@ dependencies: "@chakra-ui/utils" "2.0.4" -"@codeque/core@^0.5.0": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@codeque/core/-/core-0.5.1.tgz#842b1754c5905b4ff91fd02fb4116a32a355c2e7" - integrity sha512-TB9zSy6/TjoPDxqqP3GTXAvCDrV/31cpJLKaqxwH4FH1bkYLqmNbO8e0b4i/6e3LIELa38OtBCAjba1MY9J1wQ== - dependencies: - "@babel/parser" "7.19.4" - "@babel/plugin-syntax-typescript" "7.18.6" - "@babel/types" "7.19.4" - "@types/css-tree" "^2.3.1" - dedent "^0.7.0" - dpdm "^3.12.0" - glob-escape "^0.0.2" - ignore "^5.1.9" - minimatch "^5.1.0" - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" @@ -1802,7 +1746,7 @@ source-map "^0.5.7" stylis "4.0.13" -"@emotion/cache@^11.10.0", "@emotion/cache@^11.4.0": +"@emotion/cache@^11.10.0", "@emotion/cache@^11.4.0", "@emotion/cache@^11.9.3": version "11.10.1" resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz" integrity sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A== @@ -1813,17 +1757,6 @@ "@emotion/weak-memoize" "^0.3.0" stylis "4.0.13" -"@emotion/cache@^11.9.3": - version "11.9.3" - resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.9.3.tgz" - integrity sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg== - dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.1.1" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" - "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" @@ -1911,11 +1844,6 @@ "@emotion/utils" "^1.2.0" csstype "^3.0.2" -"@emotion/sheet@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.1.tgz" - integrity sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA== - "@emotion/sheet@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz" @@ -1964,14 +1892,14 @@ "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": version "4.6.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz" integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== "@eslint/eslintrc@^0.4.3": @@ -2006,7 +1934,7 @@ "@eslint/eslintrc@^2.1.2": version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" @@ -2021,12 +1949,12 @@ "@eslint/js@^8.47.0": version "8.47.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz" integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og== "@humanwhocodes/config-array@^0.11.10": version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz" integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -2053,7 +1981,7 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": @@ -2283,15 +2211,6 @@ chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== @@ -2300,11 +2219,24 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" @@ -2318,26 +2250,31 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17": - version "0.3.18" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": version "0.3.14" @@ -2760,22 +2697,22 @@ "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/babel__code-frame@^7.0.3": @@ -2926,7 +2863,7 @@ "@types/jest@^27.0.3": version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz" integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== dependencies: jest-matcher-utils "^27.0.0" @@ -2945,21 +2882,11 @@ resolved "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz" integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== -"@types/json-schema@*", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json-schema@^7.0.7": - version "7.0.10" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz" - integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== - -"@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - "@types/jsonfile@*": version "6.1.1" resolved "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz" @@ -3173,39 +3100,9 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^5.16.0": - version "5.16.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz" - integrity sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA== - dependencies: - "@typescript-eslint/scope-manager" "5.16.0" - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/typescript-estree" "5.16.0" - debug "^4.3.2" - -"@typescript-eslint/parser@^5.30.0": - version "5.30.5" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz" - integrity sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q== - dependencies: - "@typescript-eslint/scope-manager" "5.30.5" - "@typescript-eslint/types" "5.30.5" - "@typescript-eslint/typescript-estree" "5.30.5" - debug "^4.3.4" - -"@typescript-eslint/parser@^5.50.0": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.60.1.tgz#0f2f58209c0862a73e3d5a56099abfdfa21d0fd3" - integrity sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q== - dependencies: - "@typescript-eslint/scope-manager" "5.60.1" - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/typescript-estree" "5.60.1" - debug "^4.3.4" - -"@typescript-eslint/parser@^5.53.0": +"@typescript-eslint/parser@^5.16.0", "@typescript-eslint/parser@^5.30.0", "@typescript-eslint/parser@^5.50.0", "@typescript-eslint/parser@^5.53.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: "@typescript-eslint/scope-manager" "5.62.0" @@ -3237,17 +3134,9 @@ "@typescript-eslint/types" "5.30.5" "@typescript-eslint/visitor-keys" "5.30.5" -"@typescript-eslint/scope-manager@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz#35abdb47f500c68c08f2f2b4f22c7c79472854bb" - integrity sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ== - dependencies: - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/visitor-keys" "5.60.1" - "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3286,14 +3175,9 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz" integrity sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw== -"@typescript-eslint/types@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.60.1.tgz#a17473910f6b8d388ea83c9d7051af89c4eb7561" - integrity sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg== - "@typescript-eslint/types@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/typescript-estree@4.33.0": @@ -3335,22 +3219,9 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz#8c71824b7165b64d5ebd7aa42968899525959834" - integrity sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw== - dependencies: - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/visitor-keys" "5.60.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3409,17 +3280,9 @@ "@typescript-eslint/types" "5.30.5" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz#19a877358bf96318ec35d90bfe6bd1445cce9434" - integrity sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw== - dependencies: - "@typescript-eslint/types" "5.60.1" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3649,25 +3512,10 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4: - version "8.6.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== - -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== add-stream@^1.0.0: version "1.0.0" @@ -3807,7 +3655,7 @@ applicationinsights@^2.7.0: arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: @@ -4269,7 +4117,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@5.0.1: +chalk@5.0.1, chalk@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz" integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== @@ -4291,11 +4139,6 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz" - integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" @@ -4791,7 +4634,7 @@ cosmiconfig@^6.0.0: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^7.0.2, cross-spawn@^7.0.3: @@ -4879,14 +4722,7 @@ dateformat@^3.0.0: resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@4, debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@4.3.4, debug@^4.0.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5051,7 +4887,7 @@ diff-sequences@^27.4.0: diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diff-sequences@^29.4.3: @@ -5066,7 +4902,7 @@ diff@5.0.0: diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-glob@^3.0.1: @@ -5370,7 +5206,7 @@ eslint-scope@^7.1.1: eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -5412,7 +5248,7 @@ eslint-visitor-keys@^3.4.1: eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^7.11.0: @@ -5504,7 +5340,7 @@ eslint@^8.18.0: eslint@^8.34.0: version "8.47.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz" integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -5574,7 +5410,7 @@ espree@^9.5.2: espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -5595,7 +5431,7 @@ esquery@^1.4.0: esquery@^1.4.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -5797,7 +5633,7 @@ find-root@^1.1.0: find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -5987,16 +5823,7 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.2" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== @@ -6127,7 +5954,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" @@ -6192,7 +6019,7 @@ globals@^13.15.0: globals@^13.19.0: version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" + resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== dependencies: type-fest "^0.20.2" @@ -6275,7 +6102,7 @@ graceful-fs@^4.2.9: graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== handlebars@^4.7.7: @@ -6317,12 +6144,7 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-symbols@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -6472,16 +6294,11 @@ ignore@^4.0.6: resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -ignore@^5.1.9: - version "5.1.9" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== - import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" @@ -6656,13 +6473,6 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.9.0" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" @@ -6670,13 +6480,6 @@ is-core-module@^2.5.0, is-core-module@^2.9.0: dependencies: has "^1.0.3" -is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" @@ -7067,7 +6870,7 @@ jest-diff@^27.4.2: jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -7135,7 +6938,7 @@ jest-get-type@^27.4.0: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-get-type@^29.4.3: @@ -7197,7 +7000,7 @@ jest-leak-detector@^27.4.2: jest-matcher-utils@^27.0.0: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -7530,6 +7333,11 @@ jsesc@^2.5.1: resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" @@ -7955,13 +7763,20 @@ minimatch@^3.0.5, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1: version "5.1.0" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" +minimatch@^5.1.0: + 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" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -8097,10 +7912,10 @@ node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" - integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== +node-fetch@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== dependencies: data-uri-to-buffer "^4.0.0" fetch-blob "^3.1.4" @@ -8261,7 +8076,7 @@ optionator@^0.9.1: optionator@^0.9.3: version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: "@aashutoshrathi/word-wrap" "^1.2.3" @@ -8485,7 +8300,7 @@ path-key@^4.0.0: resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -8583,7 +8398,7 @@ prettier@^2.5.1: pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -9137,16 +8952,7 @@ resolve.exports@^1.1.0: resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.6, resolve@^1.10.1: - version "1.22.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.19.0, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.9.0: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -9155,14 +8961,6 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.19.0, resolve@^1.9.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - resolve@^1.22.1: version "1.22.2" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" @@ -9326,6 +9124,11 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.2.1: version "7.3.8" resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" @@ -9886,7 +9689,7 @@ tree-kill@^1.2.2: tree-sitter-cli@^0.20.8: version "0.20.8" - resolved "https://registry.yarnpkg.com/tree-sitter-cli/-/tree-sitter-cli-0.20.8.tgz#06a81cea8d6d82f93d67eed7d28b6bc04a4a8916" + resolved "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.20.8.tgz" integrity sha512-XjTcS3wdTy/2cc/ptMLc/WRyOLECRYcMTrSWyhZnj1oGSOWbHLTklgsgRICU3cPfb0vy+oZCC33M43u6R1HSCA== trim-newlines@^3.0.0: @@ -9920,7 +9723,7 @@ ts-loader@^9.3.1: ts-node@^10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -10030,15 +9833,10 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.5.2: - version "4.5.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz" - integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== - -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== typescript@^4.9.4: version "4.9.5" @@ -10200,7 +9998,7 @@ uuid@^8.3.0: v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-compile-cache@^2.0.3: @@ -10276,7 +10074,7 @@ web-streams-polyfill@^3.0.3, web-streams-polyfill@^3.1.1: web-tree-sitter@^0.20.8: version "0.20.8" - resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz#1e371cb577584789cadd75cb49c7ddfbc99d04c8" + resolved "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz" integrity sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ== webidl-conversions@^3.0.0: @@ -10591,7 +10389,7 @@ yargs@^17.6.2: yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: