diff --git a/.gitignore b/.gitignore
index 2c7ae79..7e5abf8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -134,3 +134,14 @@ out
# Mac OS
.DS_Store
+
+# Tree Sitter
+src/tree_sitter/**
+src/grammar.json
+src/node-types.json
+src/parser.c
+parser.dylib
+
+# Project
+asts/**
+zqlout/**
\ No newline at end of file
diff --git a/examples/create_table.sql b/examples/create_table.sql
new file mode 100644
index 0000000..cc48fd9
--- /dev/null
+++ b/examples/create_table.sql
@@ -0,0 +1,10 @@
+CREATE TABLE employees (
+ id INTEGER PRIMARY KEY,
+ first_name VARCHAR(50) NOT NULL,
+ last_name VARCHAR(50) NOT NULL,
+ email VARCHAR(100) UNIQUE,
+ salary DECIMAL DEFAULT 50000,
+ hire_date DATE NOT NULL,
+ department_id INT REFERENCES departments(id),
+ is_active BOOLEAN DEFAULT TRUE
+);
\ No newline at end of file
diff --git a/examples/delete.sql b/examples/delete.sql
new file mode 100644
index 0000000..63a2644
--- /dev/null
+++ b/examples/delete.sql
@@ -0,0 +1,2 @@
+DELETE FROM employees
+WHERE termination_date < '2023-01-01';
\ No newline at end of file
diff --git a/examples/function_call.sql b/examples/function_call.sql
new file mode 100644
index 0000000..73a48c7
--- /dev/null
+++ b/examples/function_call.sql
@@ -0,0 +1,18 @@
+SELECT
+ column_a AS a,
+ 12,
+ func(a, b),
+ otherFunc(
+ a,
+ 1,
+ b,
+ 2
+ ) AS yeah
+FROM table_a ace
+WHERE (
+ a = 1
+ ) OR (
+ b = 2
+ )
+LIMIT 5
+;
\ No newline at end of file
diff --git a/examples/inner_join_left_outer_join.sql b/examples/inner_join_left_outer_join.sql
new file mode 100644
index 0000000..0f7fdb9
--- /dev/null
+++ b/examples/inner_join_left_outer_join.sql
@@ -0,0 +1,4 @@
+SELECT e.first_name, e.last_name, d.department_name
+FROM employees e
+INNER JOIN departments d ON e.department_id = d.id
+LEFT OUTER JOIN locations l ON d.location_id = l.id;
\ No newline at end of file
diff --git a/examples/insert_multiple_values.sql b/examples/insert_multiple_values.sql
new file mode 100644
index 0000000..818b9a5
--- /dev/null
+++ b/examples/insert_multiple_values.sql
@@ -0,0 +1,4 @@
+INSERT INTO employees (first_name, last_name, salary)
+VALUES
+ ('Jane', 'Smith', 80000),
+ ('Bob', 'Johnson', 65000);
\ No newline at end of file
diff --git a/examples/insert_select.sql b/examples/insert_select.sql
new file mode 100644
index 0000000..369ac4f
--- /dev/null
+++ b/examples/insert_select.sql
@@ -0,0 +1,3 @@
+INSERT INTO employee_archive
+SELECT * FROM employees
+WHERE termination_date IS NOT NULL;
\ No newline at end of file
diff --git a/examples/insert_single_value.sql b/examples/insert_single_value.sql
new file mode 100644
index 0000000..79ee63d
--- /dev/null
+++ b/examples/insert_single_value.sql
@@ -0,0 +1,2 @@
+INSERT INTO employees (first_name, last_name, salary)
+VALUES ('John', 'Doe', 75000);
\ No newline at end of file
diff --git a/examples/query_clauses.sql b/examples/query_clauses.sql
new file mode 100644
index 0000000..e6f19dd
--- /dev/null
+++ b/examples/query_clauses.sql
@@ -0,0 +1,7 @@
+SELECT first_name, last_name, salary AS annual_pay
+FROM employees
+WHERE department_id = 100
+GROUP BY department_id
+HAVING AVG(salary) > 50000
+ORDER BY last_name DESC
+LIMIT 10;
\ No newline at end of file
diff --git a/examples/select_aggregate_clauses.sql b/examples/select_aggregate_clauses.sql
new file mode 100644
index 0000000..4a8d20f
--- /dev/null
+++ b/examples/select_aggregate_clauses.sql
@@ -0,0 +1,14 @@
+SELECT
+ d.department_name,
+ COUNT(*) AS employee_count,
+ AVG(e.salary) AS avg_salary,
+ MAX(e.hire_date) AS latest_hire
+FROM employees e
+LEFT JOIN departments d ON e.department_id = d.id
+WHERE e.salary > 50000
+ AND e.hire_date >= '2022-01-01'
+ AND (e.first_name LIKE 'J%' OR e.last_name LIKE 'S%')
+GROUP BY d.department_name
+HAVING COUNT(*) > 5
+ORDER BY avg_salary DESC
+LIMIT 5;
\ No newline at end of file
diff --git a/examples/select_from.sql b/examples/select_from.sql
new file mode 100644
index 0000000..24a1b86
--- /dev/null
+++ b/examples/select_from.sql
@@ -0,0 +1,3 @@
+SELECT a
+FROM table_a
+;
\ No newline at end of file
diff --git a/examples/select_one.sql b/examples/select_one.sql
new file mode 100644
index 0000000..027b7d6
--- /dev/null
+++ b/examples/select_one.sql
@@ -0,0 +1 @@
+SELECT 1;
\ No newline at end of file
diff --git a/examples/select_star.sql b/examples/select_star.sql
new file mode 100644
index 0000000..578fc3b
--- /dev/null
+++ b/examples/select_star.sql
@@ -0,0 +1 @@
+SELECT * FROM employees;
\ No newline at end of file
diff --git a/examples/update.sql b/examples/update.sql
new file mode 100644
index 0000000..24dd18e
--- /dev/null
+++ b/examples/update.sql
@@ -0,0 +1,4 @@
+UPDATE employees
+SET salary = salary * 1.1,
+ last_modified = CURRENT_TIMESTAMP
+WHERE department_id = 100;
\ No newline at end of file
diff --git a/grammars/basesql/grammar.js b/grammars/basesql/grammar.js
new file mode 100644
index 0000000..8b8ed00
--- /dev/null
+++ b/grammars/basesql/grammar.js
@@ -0,0 +1,254 @@
+/**
+ * This is a tree-sitter grammar for ANSI SQL.
+ * @file Common functionality shared across SQL dialects.
+ * @author Vinesh Kannan and Tamjid Rahman
+ * @license MIT
+ */
+
+///
+
+export default grammar({
+ name: "basesql",
+
+ rules: {
+ source_file: ($) => repeat($.statement),
+
+ terminal: () => token(";"),
+
+ statement: ($) =>
+ seq(
+ choice(
+ $.select_statement,
+ $.insert_statement,
+ $.update_statement,
+ $.delete_statement,
+ $.create_table_statement
+ ),
+ optional($.terminal)
+ ),
+
+ select_token: () => token("SELECT"),
+
+ // SELECT statement and its components
+ select_statement: ($) =>
+ seq(
+ $.select_token,
+ $.select_elements,
+ optional($.from_clause),
+ optional($.where_clause),
+ optional($.group_by_clause),
+ optional($.having_clause),
+ optional($.order_by_clause),
+ optional($.limit_clause)
+ ),
+
+ select_elements: ($) => choice("*", commaSep1($.select_element)),
+
+ select_element: ($) => seq($.expression, optional($.alias_suffix)),
+
+ alias_suffix: ($) =>
+ choice(
+ // WITH 'AS' keyword
+ seq($.alias_token, $.identifier),
+ // WITHOUT 'AS' keyword
+ $.identifier
+ ),
+
+ alias_token: ($) => token("AS"),
+
+ from_token: () => token("FROM"),
+
+ from_clause: ($) => seq($.from_token, commaSep1($.table_reference)),
+
+ table_reference: ($) => choice($.table_alias, $.join_clause),
+
+ table_alias: ($) => seq($.table_name, optional($.alias_suffix)),
+
+ join_clause: ($) => prec.left(2, seq($.table_reference, $.join_list)),
+
+ join_table: ($) =>
+ prec.left(
+ seq(
+ choice(
+ "JOIN",
+ seq("LEFT", optional("OUTER"), "JOIN"),
+ seq("RIGHT", optional("OUTER"), "JOIN"),
+ seq("INNER", "JOIN"),
+ seq("FULL", optional("OUTER"), "JOIN")
+ ),
+ $.table_reference,
+ "ON",
+ $.expression
+ )
+ ),
+
+ join_list: ($) =>
+ prec.left(1, seq($.join_table, optional(seq(",", $.join_table)))),
+
+ where_clause: ($) => seq("WHERE", $.expression),
+
+ group_by_clause: ($) => seq("GROUP", "BY", commaSep1($.expression)),
+
+ having_clause: ($) => seq("HAVING", $.expression),
+
+ order_by_clause: ($) => seq("ORDER", "BY", commaSep1($.order_by_element)),
+
+ order_by_element: ($) => seq($.expression, optional(choice("ASC", "DESC"))),
+
+ limit_clause: ($) => seq("LIMIT", $.number),
+
+ // INSERT statement
+ insert_statement: ($) =>
+ seq(
+ "INSERT",
+ "INTO",
+ $.table_name,
+ seq(
+ optional(seq("(", commaSep1($.identifier), ")")),
+ choice(
+ // VALUES syntax
+ seq("VALUES", commaSep1(seq("(", commaSep1($.expression), ")"))),
+ // SELECT syntax
+ seq(
+ optional(seq("(", commaSep1($.identifier), ")")),
+ $.select_statement
+ )
+ )
+ )
+ ),
+
+ // UPDATE statement
+ update_statement: ($) =>
+ seq(
+ "UPDATE",
+ $.table_name,
+ "SET",
+ commaSep1($.update_assignment),
+ optional($.where_clause)
+ ),
+
+ update_assignment: ($) => seq($.identifier, "=", $.expression),
+
+ // DELETE statement
+ delete_statement: ($) =>
+ seq("DELETE", "FROM", $.table_name, optional($.where_clause)),
+
+ // CREATE TABLE statement
+ create_table_statement: ($) =>
+ seq(
+ "CREATE",
+ "TABLE",
+ $.table_name,
+ "(",
+ commaSep1($.column_definition),
+ ")"
+ ),
+
+ column_definition: ($) =>
+ seq($.identifier, $.data_type, repeat($.column_constraint)),
+
+ data_type: ($) =>
+ choice(
+ "INT",
+ "INTEGER",
+ "BIGINT",
+ "SMALLINT",
+ "VARCHAR",
+ "TEXT",
+ "CHAR",
+ "DATE",
+ "TIMESTAMP",
+ "BOOLEAN",
+ "FLOAT",
+ "DOUBLE",
+ "DECIMAL",
+ seq("VARCHAR", "(", $.number, ")"),
+ seq("CHAR", "(", $.number, ")")
+ ),
+
+ column_constraint: ($) =>
+ choice(
+ "PRIMARY KEY",
+ "NOT NULL",
+ "UNIQUE",
+ seq("DEFAULT", $.expression),
+ seq("REFERENCES", $.table_name, optional(seq("(", $.identifier, ")")))
+ ),
+
+ expression: ($) =>
+ prec(
+ 0,
+ choice(
+ $.binary_expression,
+ $.unary_expression,
+ $.parenthesized_expression,
+ $.function_call,
+ $.column_reference,
+ $.literal
+ )
+ ),
+
+ binary_expression: ($) =>
+ choice(
+ ...[
+ ["OR", 1],
+ ["AND", 2],
+ ["=", 3],
+ ["!=", 3],
+ ["<>", 3],
+ ["<", 3],
+ ["<=", 3],
+ [">", 3],
+ [">=", 3],
+ ["LIKE", 3],
+ ["+", 4],
+ ["-", 4],
+ ["*", 5],
+ ["/", 5],
+ ].map(([operator, precedence]) =>
+ prec.left(precedence, seq($.expression, operator, $.expression))
+ ),
+ prec.left(3, seq($.expression, "IS", "NULL")),
+ prec.left(3, seq($.expression, "IS", "NOT", "NULL"))
+ ),
+
+ unary_expression: ($) =>
+ choice(
+ prec(6, seq("NOT", $.expression)),
+ prec(6, seq("-", $.expression))
+ ),
+
+ parenthesized_expression: ($) => seq("(", $.expression, ")"),
+
+ function_call: ($) =>
+ seq(
+ $.identifier,
+ "(",
+ choice("*", optional(commaSep1($.expression))),
+ ")"
+ ),
+
+ // Basic elements
+ column_reference: ($) =>
+ seq(optional(seq($.identifier, ".")), $.identifier),
+
+ table_name: ($) => seq(optional(seq($.identifier, ".")), $.identifier),
+
+ literal: ($) => choice($.string, $.number, $.boolean, $.null),
+
+ string: ($) => choice(seq("'", /[^']*/, "'"), seq('"', /[^"]*/, '"')),
+
+ number: ($) => /\d+(\.\d+)?/,
+
+ boolean: ($) => choice("TRUE", "FALSE"),
+
+ null: ($) => "NULL",
+
+ identifier: ($) => token(/[a-zA-Z_][a-zA-Z0-9_]*/),
+ },
+});
+
+// Helper functions for common patterns
+function commaSep1(rule) {
+ return seq(rule, repeat(seq(",", rule)));
+}
diff --git a/grammars/postgresql/grammar.js b/grammars/postgresql/grammar.js
new file mode 100644
index 0000000..ae3006f
--- /dev/null
+++ b/grammars/postgresql/grammar.js
@@ -0,0 +1,35 @@
+import baseSql from "../basesql/grammar.js";
+
+/**
+ * This is a tree-sitter grammar for ANSI SQL.
+ * @file Common functionality shared across SQL dialects.
+ * @author Vinesh Kannan and Tamjid Rahman
+ * @license MIT
+ */
+
+///
+
+export default grammar(baseSql, {
+ name: "postgresql",
+
+ rules: {
+ data_type: ($) =>
+ choice(
+ "INT",
+ "INTEGER",
+ "BIGINT",
+ "SMALLINT",
+ "VARCHAR",
+ "TEXT",
+ "CHAR",
+ "DATE",
+ "TIMESTAMP",
+ "BOOLEAN", // "BOOL",
+ "FLOAT",
+ "DOUBLE",
+ "DECIMAL",
+ seq("VARCHAR", "(", $.number, ")"),
+ seq("CHAR", "(", $.number, ")")
+ ),
+ },
+});
diff --git a/package.json b/package.json
index b196bbf..7ac843b 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,13 @@
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
- "preview": "vite preview"
+ "preview": "vite preview",
+ "tree-sitter": "tree-sitter",
+ "tsg": "tree-sitter generate grammars/basesql/grammar.js && tree-sitter generate grammars/postgresql/grammar.js",
+ "tsb": "tree-sitter build",
+ "tsp": "tree-sitter parse",
+ "tspa": "tree-sitter parse examples/**/*.sql --quiet --stat",
+ "render": "tsx src/scripts/render.ts"
},
"dependencies": {
"@codemirror/lang-sql": "^6.8.0",
@@ -15,17 +21,22 @@
"@uiw/react-codemirror": "^4.23.6",
"code-mirror": "^3.22.0",
"react": "^18.3.1",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "tree-sitter": "^0.22.1",
+ "tsx": "^4.19.2",
+ "yargs": "^17.7.2"
},
"devDependencies": {
"@eslint/js": "^9.11.1",
"@types/react": "^18.3.10",
"@types/react-dom": "^18.3.0",
+ "@types/yargs": "^17.0.33",
"@vitejs/plugin-react": "^4.3.2",
"eslint": "^9.11.1",
"eslint-plugin-react-hooks": "^5.1.0-rc.0",
"eslint-plugin-react-refresh": "^0.4.12",
"globals": "^15.9.0",
+ "tree-sitter-cli": "^0.24.4",
"typescript": "^5.5.3",
"typescript-eslint": "^8.7.0",
"vite": "^5.4.8"
diff --git a/src/converter/createAst.ts b/src/converter/createAst.ts
new file mode 100644
index 0000000..822edc6
--- /dev/null
+++ b/src/converter/createAst.ts
@@ -0,0 +1,218 @@
+type SourcePosition = {
+ line: number;
+ char: number;
+};
+
+type AstElement = {
+ name: string;
+ start: SourcePosition;
+ end: SourcePosition;
+};
+
+export type AstNode = {
+ name: string;
+ range: { start: SourcePosition; end: SourcePosition };
+ source: string;
+ children: AstNode[];
+};
+
+type AstNodeContext = {
+ node: AstNode;
+ level: number;
+ isParent: boolean;
+ isLeaf: boolean;
+};
+
+const NEWLINE = "\n";
+const SPACE = " ";
+const EMPTY_CHAR = "";
+
+const OPEN_PAREN = "(";
+const CLOSE_PAREN = ")";
+
+const CLOSE_SQUARE = "]";
+
+const NAME_SEP = " [";
+const RANGE_SEP = " - [";
+const LOCATION_SEP = ", ";
+
+function parseElement(line: string): AstElement {
+ const content = line.trim().slice(1);
+ const [nameAndStart, rawEnd] = content.split(RANGE_SEP);
+ const [name, rawStart] = nameAndStart.split(NAME_SEP);
+ const start = rawStart.split(CLOSE_SQUARE)[0].split(LOCATION_SEP);
+ const end = rawEnd.split(CLOSE_SQUARE)[0].split(LOCATION_SEP);
+ const element = {
+ name,
+ start: {
+ line: parseInt(start[0], 10),
+ char: parseInt(start[1], 10),
+ },
+ end: {
+ line: parseInt(end[0], 10),
+ char: parseInt(end[1], 10),
+ },
+ };
+ return element;
+}
+
+function getCumulativeCharsByLine(source: string): number[] {
+ const lines = source.split(NEWLINE);
+ let totalChars = 0;
+ const cumulativeCharsByLine = [];
+ for (const line of lines) {
+ cumulativeCharsByLine.push(totalChars);
+ // Add one for the newline character.
+ // The last line does not get counted because we only store
+ // cumulative characters before each line.
+ totalChars += line.length + 1;
+ }
+ return cumulativeCharsByLine;
+}
+
+function getRangeForSource(
+ element: AstElement,
+ cumulativeCharsByLine: number[]
+): { start: number; end: number } {
+ const start = cumulativeCharsByLine[element.start.line] + element.start.char;
+ const end = cumulativeCharsByLine[element.end.line] + element.end.char;
+ return { start, end };
+}
+
+function extractSource(
+ element: AstElement,
+ source: string,
+ cumulativeCharsByLine: number[]
+): string {
+ const { start, end } = getRangeForSource(element, cumulativeCharsByLine);
+ const segment = source.slice(start, end);
+ return segment;
+}
+
+function parseNode(
+ line: string,
+ source: string,
+ cumulativeCharsByLine: number[]
+): AstNode {
+ const element = parseElement(line);
+ const { name, start, end } = element;
+ return {
+ name: name,
+ range: { start, end },
+ source: extractSource(element, source, cumulativeCharsByLine),
+ children: [],
+ };
+}
+
+function addWhitespaceNodes(siblings: AstNode[]): AstNode[] {
+ if (siblings.length === 0) {
+ return [];
+ }
+ const allNodes = [siblings[0]];
+ for (let i = 1; i < siblings.length; i++) {
+ const previousNode = siblings[i - 1];
+ const node = siblings[i];
+ const lineDiff = node.range.start.line - previousNode.range.end.line;
+ const sameLineCharDiff =
+ node.range.start.char - previousNode.range.end.char;
+ if (lineDiff === 0) {
+ if (sameLineCharDiff > 0) {
+ allNodes.push({
+ name: "space",
+ range: {
+ start: previousNode.range.end,
+ end: node.range.start,
+ },
+ source: Array(sameLineCharDiff).fill(SPACE).join(EMPTY_CHAR),
+ children: [],
+ });
+ }
+ } else {
+ allNodes.push({
+ name: "newline",
+ range: {
+ start: previousNode.range.end,
+ end: node.range.start,
+ },
+ source: Array(lineDiff).fill(NEWLINE).join(EMPTY_CHAR),
+ children: [],
+ });
+ }
+ allNodes.push(node);
+ }
+ return allNodes;
+}
+
+function getNumberOfLevelsResolved(line: string): number {
+ const squareParts = line.split(CLOSE_SQUARE);
+ const closeParens = squareParts[squareParts.length - 1];
+ const pops = closeParens
+ .split(EMPTY_CHAR)
+ .filter((c) => c === CLOSE_PAREN).length;
+ const levels = pops - 1;
+ return Math.max(levels, 0);
+}
+
+function accumulateTreeLevel(dfsNodes: AstNodeContext[]): AstNode[] {
+ if (dfsNodes.length === 0) {
+ return [];
+ }
+ if (dfsNodes.length === 1) {
+ return [dfsNodes[0].node];
+ }
+
+ const firstNode = dfsNodes[0];
+ const currentLevel = firstNode.level;
+ const levelNodes = [];
+ let currentParent = null;
+ let currentDescendants = [];
+ for (let i = 0; i < dfsNodes.length; i++) {
+ const node = dfsNodes[i];
+ if (node.level === currentLevel) {
+ if (currentParent != null) {
+ currentParent.children = accumulateTreeLevel(currentDescendants);
+ levelNodes.push(currentParent);
+ currentDescendants = [];
+ }
+ currentParent = node.node;
+ } else {
+ currentDescendants.push(node);
+ }
+ }
+ if (currentParent != null) {
+ currentParent.children = accumulateTreeLevel(currentDescendants);
+ levelNodes.push(currentParent);
+ currentDescendants = [];
+ }
+ return addWhitespaceNodes(levelNodes);
+}
+
+export function createAst(parsed: string, source: string): AstNode {
+ const parsedLines = parsed.split(NEWLINE);
+ const cumulativeCharsByLine = getCumulativeCharsByLine(source);
+ const dfsNodes = [];
+ let level = 0;
+ for (const rawLine of parsedLines) {
+ // Process node.
+ const line = rawLine.trim();
+ const node = parseNode(line, source, cumulativeCharsByLine);
+ const isOpen = line.startsWith(OPEN_PAREN);
+ const isClosed = line.endsWith(CLOSE_PAREN);
+ const isLeaf = isOpen && isClosed;
+ const isParent = isOpen && !isClosed;
+ const levelsResolved = getNumberOfLevelsResolved(line);
+
+ // Add node to array in depth-first search order.
+ dfsNodes.push({ node, level, isParent, isLeaf });
+
+ // Update level number.
+ if (isParent) {
+ level += 1;
+ }
+ level -= levelsResolved;
+ }
+
+ const rootLevel = accumulateTreeLevel(dfsNodes);
+ const root = rootLevel[0];
+ return root;
+}
diff --git a/src/converter/renderer.ts b/src/converter/renderer.ts
new file mode 100644
index 0000000..afef06f
--- /dev/null
+++ b/src/converter/renderer.ts
@@ -0,0 +1,20 @@
+import { AstNode } from "./createAst";
+
+export type RenderFn = (node: AstNode) => string;
+
+export type RendererMap = {
+ [key: string]: RenderFn;
+};
+
+export function renderNode(node: AstNode, rendererMap: RendererMap): string {
+ if (node.children.length > 0) {
+ return node.children.map((c) => renderNode(c, rendererMap)).join("");
+ }
+
+ const render = rendererMap[node.name];
+ if (render) {
+ return render(node);
+ }
+
+ return node.source;
+}
diff --git a/src/renderers/basesql/renderer.js b/src/renderers/basesql/renderer.js
new file mode 100644
index 0000000..9b203ac
--- /dev/null
+++ b/src/renderers/basesql/renderer.js
@@ -0,0 +1,5 @@
+export default {
+ select_token: () => "SELECT",
+ from_token: () => "FROM",
+ terminal: () => ";",
+};
diff --git a/src/renderers/zql/renderer.d.ts b/src/renderers/zql/renderer.d.ts
new file mode 100644
index 0000000..bb83f63
--- /dev/null
+++ b/src/renderers/zql/renderer.d.ts
@@ -0,0 +1,5 @@
+import { RendererMap } from "../../converter/renderer";
+
+declare const zqlRenderer: RendererMap;
+
+export default zqlRenderer;
diff --git a/src/renderers/zql/renderer.js b/src/renderers/zql/renderer.js
new file mode 100644
index 0000000..92651f3
--- /dev/null
+++ b/src/renderers/zql/renderer.js
@@ -0,0 +1,5 @@
+export default {
+ select_token: () => "its giving",
+ from_token: () => "yass",
+ terminal: () => "no cap",
+};
diff --git a/src/scripts/render.ts b/src/scripts/render.ts
new file mode 100644
index 0000000..b1f1ad7
--- /dev/null
+++ b/src/scripts/render.ts
@@ -0,0 +1,19 @@
+import { createAst } from "../converter/createAst";
+import { renderNode } from "../converter/renderer";
+import zqlRenderer from "../renderers/zql/renderer";
+import * as fs from "fs";
+
+const argv = {
+ parsed: "./asts/select_from.ast",
+ source: "./examples/select_from.sql",
+ ast: "./asts/select_from.json",
+ out: "./zqlout/select_from.zql",
+};
+
+const parsed = fs.readFileSync(argv.parsed).toString();
+const source = fs.readFileSync(argv.source).toString();
+const root = createAst(parsed, source);
+fs.writeFileSync(argv.ast, JSON.stringify(root, undefined, 2));
+
+const zql = renderNode(root, zqlRenderer);
+fs.writeFileSync(argv.out, zql);
diff --git a/tree-sitter.json b/tree-sitter.json
new file mode 100644
index 0000000..0725b46
--- /dev/null
+++ b/tree-sitter.json
@@ -0,0 +1,39 @@
+{
+ "grammars": [
+ {
+ "name": "basesql",
+ "camelcase": "BaseSql",
+ "scope": "source.basesql",
+ "file-types": [
+ ".sql"
+ ],
+ "injection-regex": "^basesql$"
+ },
+ {
+ "name": "postgresql",
+ "camelcase": "PostgreSql",
+ "scope": "source.postgresql",
+ "file-types": [
+ ".psql"
+ ],
+ "injection-regex": "^postgresql$"
+ }
+ ],
+ "metadata": {
+ "version": "0.1.0",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Vinesh Kannan and Tamjid Rahman"
+ }
+ ]
+ },
+ "bindings": {
+ "c": false,
+ "go": false,
+ "node": true,
+ "python": false,
+ "rust": false,
+ "swift": false
+ }
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index e2ff72b..48411df 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -171,9 +171,9 @@
"@babel/helper-validator-identifier" "^7.25.9"
"@codemirror/autocomplete@^6.0.0":
- version "6.18.2"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.2.tgz#bf3f15f1bf0fdfa3b4fac560e419adae1ece8a94"
- integrity sha512-wJGylKtMFR/Ds6Gh01+OovXE/pncPiKZNNBKuC39pKnH+XK5d9+WsNqcrdxPjFPFTigRBqse0rfxw9UxrfyhPg==
+ version "6.18.3"
+ resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz#f9ea79a2f369662516f71bc0b2f819454d3c8e00"
+ integrity sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
@@ -268,116 +268,236 @@
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
+"@esbuild/aix-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353"
+ integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==
+
"@esbuild/android-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
+"@esbuild/android-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018"
+ integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==
+
"@esbuild/android-arm@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
+"@esbuild/android-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee"
+ integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==
+
"@esbuild/android-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
+"@esbuild/android-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517"
+ integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==
+
"@esbuild/darwin-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
+"@esbuild/darwin-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16"
+ integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==
+
"@esbuild/darwin-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
+"@esbuild/darwin-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931"
+ integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==
+
"@esbuild/freebsd-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
+"@esbuild/freebsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc"
+ integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==
+
"@esbuild/freebsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
+"@esbuild/freebsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730"
+ integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==
+
"@esbuild/linux-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
+"@esbuild/linux-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383"
+ integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==
+
"@esbuild/linux-arm@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
+"@esbuild/linux-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771"
+ integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==
+
"@esbuild/linux-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
+"@esbuild/linux-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333"
+ integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==
+
"@esbuild/linux-loong64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
+"@esbuild/linux-loong64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac"
+ integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==
+
"@esbuild/linux-mips64el@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
+"@esbuild/linux-mips64el@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6"
+ integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==
+
"@esbuild/linux-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
+"@esbuild/linux-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96"
+ integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==
+
"@esbuild/linux-riscv64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
+"@esbuild/linux-riscv64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7"
+ integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==
+
"@esbuild/linux-s390x@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
+"@esbuild/linux-s390x@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f"
+ integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==
+
"@esbuild/linux-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
+"@esbuild/linux-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24"
+ integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==
+
"@esbuild/netbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
+"@esbuild/netbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653"
+ integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==
+
+"@esbuild/openbsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7"
+ integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==
+
"@esbuild/openbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
+"@esbuild/openbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273"
+ integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==
+
"@esbuild/sunos-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
+"@esbuild/sunos-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403"
+ integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==
+
"@esbuild/win32-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
+"@esbuild/win32-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2"
+ integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==
+
"@esbuild/win32-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
+"@esbuild/win32-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac"
+ integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==
+
"@esbuild/win32-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
+"@esbuild/win32-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
+ integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
+
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.1"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
@@ -430,9 +550,9 @@
integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
"@eslint/plugin-kit@^0.2.0":
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6"
- integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz#812980a6a41ecf3a8341719f92a6d1e784a2e0e8"
+ integrity sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==
dependencies:
levn "^0.4.1"
@@ -548,95 +668,95 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@rollup/rollup-android-arm-eabi@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz#3e7eda4c0c1de6d2415343002d742ff95e38dca7"
- integrity sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==
-
-"@rollup/rollup-android-arm64@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz#04f679231acf7284f1f8a1f7250d0e0944865ba8"
- integrity sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==
-
-"@rollup/rollup-darwin-arm64@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz#ecea723041621747d0772af93b54752edf26467a"
- integrity sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==
-
-"@rollup/rollup-darwin-x64@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz#28e6e0687092f31e20982fc104779d48c643fc21"
- integrity sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==
-
-"@rollup/rollup-freebsd-arm64@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz#99e9173b8aef3d1ef086983da70413988206e530"
- integrity sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==
-
-"@rollup/rollup-freebsd-x64@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz#f3a1ef941f8d3c6b2b036484c69a7b2d3d9ebbd7"
- integrity sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz#9ba6adcc33f26f2a0c6ee658f0bbda4de8da2f75"
- integrity sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==
-
-"@rollup/rollup-linux-arm-musleabihf@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz#62f2426fa9016ec884f4fa779d7b62d5ba02a41a"
- integrity sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==
-
-"@rollup/rollup-linux-arm64-gnu@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz#f98ec111a231d35e0c6d3404e3d80f67f9d5b9f8"
- integrity sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==
-
-"@rollup/rollup-linux-arm64-musl@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz#4b36ffb8359f959f2c29afd187603c53368b6723"
- integrity sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz#52f4b39e6783505d168a745b79d86474fde71680"
- integrity sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==
-
-"@rollup/rollup-linux-riscv64-gnu@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz#49195be7e6a7d68d482b12461e2ea914e31ff977"
- integrity sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==
-
-"@rollup/rollup-linux-s390x-gnu@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz#4b8d50a205eac7b46cdcb9c50d4a6ae5994c02e0"
- integrity sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==
-
-"@rollup/rollup-linux-x64-gnu@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz#dfcceebc5ccac7fc2db19471996026258c81b55f"
- integrity sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==
-
-"@rollup/rollup-linux-x64-musl@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz#192f78bad8429711d63a31dc0a7d3312e2df850e"
- integrity sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==
-
-"@rollup/rollup-win32-arm64-msvc@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz#f4ec076579634f780b4e5896ae7f59f3e38e0c60"
- integrity sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==
-
-"@rollup/rollup-win32-ia32-msvc@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz#5458eab1929827e4f805cefb90bd09ecf7eeed2b"
- integrity sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==
-
-"@rollup/rollup-win32-x64-msvc@4.25.0":
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz#93415e7e707e4b156d77c5950b983b58f4bc33f3"
- integrity sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==
+"@rollup/rollup-android-arm-eabi@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz#f221c519a6efb5d3652bff32351522e0fb98e392"
+ integrity sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==
+
+"@rollup/rollup-android-arm64@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz#196a2379d81011422fe1128e512a8811605ede16"
+ integrity sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==
+
+"@rollup/rollup-darwin-arm64@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz#0c83e5f25adae7f0543ac29a0ebd485a0e7cd3e4"
+ integrity sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==
+
+"@rollup/rollup-darwin-x64@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz#8131b174ca8cec04e2041e42eb8382afe31095c8"
+ integrity sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==
+
+"@rollup/rollup-freebsd-arm64@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz#550a0ebf5bea6ceee79dc2f75a0bcef7d660de2c"
+ integrity sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==
+
+"@rollup/rollup-freebsd-x64@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz#51ca2e6d9ce72e63d5201607651732e5300a6f81"
+ integrity sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz#ae71d6aa81e702c4efb72c1a67a6a4e790267a1b"
+ integrity sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==
+
+"@rollup/rollup-linux-arm-musleabihf@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz#6aa7baa5c39c095fa5f9804e283e126697e0342a"
+ integrity sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==
+
+"@rollup/rollup-linux-arm64-gnu@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz#2b06e147ca68c7729ca38e5c7a514d1b00f4d151"
+ integrity sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==
+
+"@rollup/rollup-linux-arm64-musl@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz#70f8cacb255800e4cad41bdbe447432354288909"
+ integrity sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz#21aed3ef42518b7fe33f4037a14b0939a071cf75"
+ integrity sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==
+
+"@rollup/rollup-linux-riscv64-gnu@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz#fe27eb8cbd3a6e0706459781c2463b624f785696"
+ integrity sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==
+
+"@rollup/rollup-linux-s390x-gnu@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz#80289a528dd333b0e277efd93bfa8e2cdd27e5eb"
+ integrity sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==
+
+"@rollup/rollup-linux-x64-gnu@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz#9909570be5cb738c23858c94308d37dde363eb7e"
+ integrity sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==
+
+"@rollup/rollup-linux-x64-musl@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz#371315e032497f7a46f64b4ebcd207313b7f6669"
+ integrity sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==
+
+"@rollup/rollup-win32-arm64-msvc@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz#f4b4e0747710ba287eb2e2a011538ee2ed7f74d3"
+ integrity sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==
+
+"@rollup/rollup-win32-ia32-msvc@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz#2eeabbc99342dafe04613a76c441be4ebcca49c3"
+ integrity sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==
+
+"@rollup/rollup-win32-x64-msvc@4.26.0":
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz#a3ae3da434a4ba0785312e963ae4c1239470403a"
+ integrity sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==
"@swc/helpers@^0.5.11":
version "0.5.15"
@@ -725,6 +845,18 @@
"@types/prop-types" "*"
csstype "^3.0.2"
+"@types/yargs-parser@*":
+ version "21.0.3"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
+ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
+
+"@types/yargs@^17.0.33":
+ version "17.0.33"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
+ integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
+ dependencies:
+ "@types/yargs-parser" "*"
+
"@typescript-eslint/eslint-plugin@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz#7dc0e419c87beadc8f554bf5a42e5009ed3748dc"
@@ -1010,6 +1142,15 @@ cli@0.4.x:
dependencies:
glob ">= 3.1.4"
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
code-mirror@^3.22.0:
version "3.22.0"
resolved "https://registry.yarnpkg.com/code-mirror/-/code-mirror-3.22.0.tgz#ef3a263c1844ab9cabd0a8cfc69ac3d8ad67edfa"
@@ -1144,9 +1285,9 @@ eastasianwidth@^0.2.0:
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
electron-to-chromium@^1.5.41:
- version "1.5.56"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.56.tgz#3213f369efc3a41091c3b2c05bc0f406108ac1df"
- integrity sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw==
+ version "1.5.59"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.59.tgz#220d48099bf51dfb804bbb2386592c16c232de38"
+ integrity sha512-faAXB6+gEbC8FsiRdpOXgOe4snP49YwjiXynEB8Mp7sUx80W5eN+BnnBHJ/F7eIeLzs+QBfDD40bJMm97oEFcw==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -1187,7 +1328,37 @@ esbuild@^0.21.3:
"@esbuild/win32-ia32" "0.21.5"
"@esbuild/win32-x64" "0.21.5"
-escalade@^3.2.0:
+esbuild@~0.23.0:
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8"
+ integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.23.1"
+ "@esbuild/android-arm" "0.23.1"
+ "@esbuild/android-arm64" "0.23.1"
+ "@esbuild/android-x64" "0.23.1"
+ "@esbuild/darwin-arm64" "0.23.1"
+ "@esbuild/darwin-x64" "0.23.1"
+ "@esbuild/freebsd-arm64" "0.23.1"
+ "@esbuild/freebsd-x64" "0.23.1"
+ "@esbuild/linux-arm" "0.23.1"
+ "@esbuild/linux-arm64" "0.23.1"
+ "@esbuild/linux-ia32" "0.23.1"
+ "@esbuild/linux-loong64" "0.23.1"
+ "@esbuild/linux-mips64el" "0.23.1"
+ "@esbuild/linux-ppc64" "0.23.1"
+ "@esbuild/linux-riscv64" "0.23.1"
+ "@esbuild/linux-s390x" "0.23.1"
+ "@esbuild/linux-x64" "0.23.1"
+ "@esbuild/netbsd-x64" "0.23.1"
+ "@esbuild/openbsd-arm64" "0.23.1"
+ "@esbuild/openbsd-x64" "0.23.1"
+ "@esbuild/sunos-x64" "0.23.1"
+ "@esbuild/win32-arm64" "0.23.1"
+ "@esbuild/win32-ia32" "0.23.1"
+ "@esbuild/win32-x64" "0.23.1"
+
+escalade@^3.1.1, escalade@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
@@ -1402,6 +1573,18 @@ gensync@^1.0.0-beta.2:
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-tsconfig@^4.7.5:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
+ integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
+ dependencies:
+ resolve-pkg-maps "^1.0.0"
+
glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -1707,6 +1890,16 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+node-addon-api@^8.2.1:
+ version "8.2.2"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.2.2.tgz#3658f78d04d260aa95931d3bbc45f22ce433b821"
+ integrity sha512-9emqXAKhVoNrQ792nLI/wpzPpJ/bj/YXxW0CvAau1+RdGBcCRF1Dmz7719zgVsQNrzHl9Tzn3ImZ4qWFarWL0A==
+
+node-gyp-build@^4.8.2:
+ version "4.8.3"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.3.tgz#9187216d24dbee29e44eb20d2ebf62a296bbea1a"
+ integrity sha512-EMS95CMJzdoSKoIiXo8pxKoL8DYxwIZXYlLmgPb8KUv794abpnLK6ynsCAWNliOjREKruYKdzbh76HHYUHX7nw==
+
node-releases@^2.0.18:
version "2.0.18"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
@@ -1843,41 +2036,51 @@ regenerator-runtime@^0.14.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+resolve-pkg-maps@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
+ integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
+
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rollup@^4.20.0:
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.25.0.tgz#74dff4b5c2777dfc490f9711393925da50171787"
- integrity sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==
+ version "4.26.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.26.0.tgz#a3e5fb29d50953633a2fd4506da6448d93268944"
+ integrity sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==
dependencies:
"@types/estree" "1.0.6"
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.25.0"
- "@rollup/rollup-android-arm64" "4.25.0"
- "@rollup/rollup-darwin-arm64" "4.25.0"
- "@rollup/rollup-darwin-x64" "4.25.0"
- "@rollup/rollup-freebsd-arm64" "4.25.0"
- "@rollup/rollup-freebsd-x64" "4.25.0"
- "@rollup/rollup-linux-arm-gnueabihf" "4.25.0"
- "@rollup/rollup-linux-arm-musleabihf" "4.25.0"
- "@rollup/rollup-linux-arm64-gnu" "4.25.0"
- "@rollup/rollup-linux-arm64-musl" "4.25.0"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.25.0"
- "@rollup/rollup-linux-riscv64-gnu" "4.25.0"
- "@rollup/rollup-linux-s390x-gnu" "4.25.0"
- "@rollup/rollup-linux-x64-gnu" "4.25.0"
- "@rollup/rollup-linux-x64-musl" "4.25.0"
- "@rollup/rollup-win32-arm64-msvc" "4.25.0"
- "@rollup/rollup-win32-ia32-msvc" "4.25.0"
- "@rollup/rollup-win32-x64-msvc" "4.25.0"
+ "@rollup/rollup-android-arm-eabi" "4.26.0"
+ "@rollup/rollup-android-arm64" "4.26.0"
+ "@rollup/rollup-darwin-arm64" "4.26.0"
+ "@rollup/rollup-darwin-x64" "4.26.0"
+ "@rollup/rollup-freebsd-arm64" "4.26.0"
+ "@rollup/rollup-freebsd-x64" "4.26.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.26.0"
+ "@rollup/rollup-linux-arm-musleabihf" "4.26.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.26.0"
+ "@rollup/rollup-linux-arm64-musl" "4.26.0"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.26.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.26.0"
+ "@rollup/rollup-linux-s390x-gnu" "4.26.0"
+ "@rollup/rollup-linux-x64-gnu" "4.26.0"
+ "@rollup/rollup-linux-x64-musl" "4.26.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.26.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.26.0"
+ "@rollup/rollup-win32-x64-msvc" "4.26.0"
fsevents "~2.3.2"
run-parallel@^1.1.9:
@@ -1945,7 +2148,7 @@ source-map-js@^1.2.1:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string-width@^4.1.0:
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -2026,6 +2229,19 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+tree-sitter-cli@^0.24.4:
+ version "0.24.4"
+ resolved "https://registry.yarnpkg.com/tree-sitter-cli/-/tree-sitter-cli-0.24.4.tgz#bd9c28af9bbbe350d1fcb2389c2198cec6f59b6e"
+ integrity sha512-I4sdtDidnujYL0tR0Re9q0UJt5KrITf2m+GMHjT4LH6IC6kpM6eLzSR7RS36Z4t5ZQBjDHvg2QUJHAWQi3P2TA==
+
+tree-sitter@^0.22.1:
+ version "0.22.1"
+ resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.22.1.tgz#5a5296fc0898b21443657e071b050c95c0d7afbd"
+ integrity sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw==
+ dependencies:
+ node-addon-api "^8.2.1"
+ node-gyp-build "^4.8.2"
+
ts-api-utils@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c"
@@ -2036,6 +2252,16 @@ tslib@^2.6.2, tslib@^2.8.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+tsx@^4.19.2:
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c"
+ integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==
+ dependencies:
+ esbuild "~0.23.0"
+ get-tsconfig "^4.7.5"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -2154,6 +2380,15 @@ wordwrapjs@^5.1.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
@@ -2163,11 +2398,34 @@ wrap-ansi@^8.1.0:
string-width "^5.0.1"
strip-ansi "^7.0.1"
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^17.7.2:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"