@sqlrooms/sql-editor 0.24.4 → 0.24.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionSuggestions.d.ts","sourceRoot":"","sources":["../../src/constants/functionSuggestions.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,eAAe,EAEhB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"functionSuggestions.d.ts","sourceRoot":"","sources":["../../src/constants/functionSuggestions.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAwD1B,eAAO,MAAM,sBAAsB;UAjDR,MAAM;mBAAiB,MAAM;GAiDqB,CAAC"}
|
|
@@ -2,26 +2,28 @@
|
|
|
2
2
|
import { createTypedRowAccessor, escapeVal, } from '@sqlrooms/duckdb';
|
|
3
3
|
import { memoizeOnce } from '@sqlrooms/utils';
|
|
4
4
|
const getFunctionSuggestionsImpl = async (connector, wordBeforeCursor, limit = 100) => {
|
|
5
|
-
const result = await connector.query(`SELECT
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
examples,
|
|
10
|
-
parameters,
|
|
11
|
-
parameter_types as parameterTypes,
|
|
12
|
-
description
|
|
13
|
-
FROM duckdb_functions()
|
|
14
|
-
WHERE name ILIKE ${escapeVal(wordBeforeCursor.replace(/([%_\\])/g, '\\$1') + '%')} ESCAPE '\\'
|
|
15
|
-
AND REGEXP_MATCHES(name,'^[A-Z]', 'i')
|
|
16
|
-
ORDER BY name
|
|
5
|
+
const result = await connector.query(`SELECT * FROM duckdb_functions()
|
|
6
|
+
WHERE function_name ILIKE ${escapeVal(wordBeforeCursor.replace(/([%_\\])/g, '\\$1') + '%')} ESCAPE '\\'
|
|
7
|
+
AND REGEXP_MATCHES(function_name, '^[A-Z]', 'i')
|
|
8
|
+
ORDER BY function_name
|
|
17
9
|
LIMIT ${limit}
|
|
18
10
|
`);
|
|
19
|
-
return Array.from(groupFunctionsByName(Array.from(createTypedRowAccessor({ arrowTable: result })).map((
|
|
11
|
+
return Array.from(groupFunctionsByName(Array.from(createTypedRowAccessor({ arrowTable: result })).map(({ function_name, function_type, return_type, example, // older DuckDB versions
|
|
12
|
+
examples, parameters, parameter_types, description, }) => {
|
|
20
13
|
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
examples:
|
|
14
|
+
name: function_name,
|
|
15
|
+
type: function_type,
|
|
16
|
+
returnType: return_type,
|
|
17
|
+
examples:
|
|
18
|
+
// older DuckDB versions have `example` string instead of `examples` array
|
|
19
|
+
examples?.toArray instanceof Function
|
|
20
|
+
? examples.toArray()
|
|
21
|
+
: typeof example === 'string'
|
|
22
|
+
? [example]
|
|
23
|
+
: [],
|
|
24
|
+
parameters: Array.from(parameters),
|
|
25
|
+
parameterTypes: Array.from(parameter_types),
|
|
26
|
+
description: description,
|
|
25
27
|
};
|
|
26
28
|
})).entries()).map(([name, rows]) => {
|
|
27
29
|
return { name, documentation: formatDocumentation(rows) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionSuggestions.js","sourceRoot":"","sources":["../../src/constants/functionSuggestions.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EACL,sBAAsB,EAEtB,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"functionSuggestions.js","sourceRoot":"","sources":["../../src/constants/functionSuggestions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2022 Foursquare Labs, Inc. All Rights Reserved.\n\nimport {\n createTypedRowAccessor,\n DuckDbConnector,\n escapeVal,\n} from '@sqlrooms/duckdb';\nimport {memoizeOnce} from '@sqlrooms/utils';\n\nconst getFunctionSuggestionsImpl = async (\n connector: DuckDbConnector,\n wordBeforeCursor: string,\n limit = 100,\n): Promise<Iterable<{name: string; documentation: string}>> => {\n const result = await connector.query(\n `SELECT * FROM duckdb_functions()\n WHERE function_name ILIKE ${escapeVal(\n wordBeforeCursor.replace(/([%_\\\\])/g, '\\\\$1') + '%',\n )} ESCAPE '\\\\'\n AND REGEXP_MATCHES(function_name, '^[A-Z]', 'i')\n ORDER BY function_name\n LIMIT ${limit}\n `,\n );\n\n return Array.from(\n groupFunctionsByName(\n Array.from(createTypedRowAccessor({arrowTable: result})).map(\n ({\n function_name,\n function_type,\n return_type,\n example, // older DuckDB versions\n examples,\n parameters,\n parameter_types,\n description,\n }: Record<string, any>) => {\n return {\n name: function_name,\n type: function_type,\n returnType: return_type,\n examples:\n // older DuckDB versions have `example` string instead of `examples` array\n examples?.toArray instanceof Function\n ? examples.toArray()\n : typeof example === 'string'\n ? [example]\n : [],\n parameters: Array.from(parameters),\n parameterTypes: Array.from(parameter_types),\n description: description,\n };\n },\n ),\n ).entries(),\n ).map(([name, rows]) => {\n return {name, documentation: formatDocumentation(rows)};\n });\n};\n\n// Memoized version of the function\nexport const getFunctionSuggestions = memoizeOnce(getFunctionSuggestionsImpl);\n\ntype FunctionRow = {\n name: string;\n type: string;\n returnType: string;\n parameters: string[];\n parameterTypes: string[];\n description: string;\n examples: string[];\n};\n\nfunction groupFunctionsByName(\n functions: FunctionRow[],\n): Map<string, FunctionRow[]> {\n return functions.reduce((acc, fn) => {\n if (!acc.has(fn.name)) {\n acc.set(fn.name, []);\n }\n\n acc.get(fn.name)?.push(fn);\n\n return acc;\n }, new Map<string, FunctionRow[]>());\n}\n\nfunction formatDocumentation(functions: FunctionRow[]): string {\n // if no overload, return empty string\n if (!functions.length) {\n return '';\n }\n\n return [\n formatSignatures(functions),\n formatDescription(functions),\n formatExamples(functions),\n ]\n .filter(Boolean)\n .join('<br>');\n}\n\nfunction formatDescription(functions: FunctionRow[]): string {\n // description is the same for all overloads, so we can take it from the first one\n const description = functions[0]?.description;\n return description ? `<i>${description}</i>` : '';\n}\n\nfunction formatExamples(functions: FunctionRow[], examplesToShow = 3): string {\n const examples = Array.from(\n new Set(functions.flatMap((fn) => fn.examples).filter(Boolean)),\n )\n .slice(0, examplesToShow)\n .join('\\n');\n\n if (!examples) {\n return '';\n }\n\n return `<br><b>Examples:</b><br><pre>${examples}</pre>`;\n}\n\nfunction formatSignatures(\n functions: FunctionRow[],\n overloadsToShow = 3,\n): string {\n const overloadToShow = functions.slice(0, overloadsToShow);\n\n const formattedOverloads = overloadToShow.map(formatSignature);\n\n // print more overloads count message\n const moreOverloadsCount = functions.length - overloadToShow.length;\n const formattedMoreOverloads = moreOverloadsCount\n ? `(+${moreOverloadsCount} more overload)`\n : '';\n\n // build lines array\n const lines = [\n ...formattedOverloads,\n ...(formattedMoreOverloads ? [formattedMoreOverloads] : []),\n ];\n\n return `<pre>${lines.filter(Boolean).join('\\n')}</pre>`;\n}\n\nfunction formatSignature({\n name,\n parameterTypes,\n parameters,\n returnType,\n}: FunctionRow): string {\n // format parameters\n const params = parameters\n .map((parameterName, index) => ({\n parameterName,\n parameterType: parameterTypes[index],\n }))\n .map(({parameterName, parameterType}) => {\n if (parameterType) {\n return `${parameterName}: ${parameterType}`;\n }\n return parameterName;\n })\n .join(', ');\n\n // format signature body\n const signatureBody = `${name}(${params})`;\n\n // if returnType is defined, add it to the signature\n if (returnType) {\n return `${signatureBody}: ${returnType}`;\n }\n\n return signatureBody;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/sql-editor",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Ilya Boyandin <ilya@boyandin.me>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,16 +28,16 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@hookform/resolvers": "^3.10.0",
|
|
30
30
|
"@monaco-editor/react": "^4.7.0",
|
|
31
|
-
"@sqlrooms/data-table": "0.24.
|
|
32
|
-
"@sqlrooms/duckdb": "0.24.
|
|
33
|
-
"@sqlrooms/layout": "0.24.
|
|
34
|
-
"@sqlrooms/monaco-editor": "0.24.
|
|
35
|
-
"@sqlrooms/room-config": "0.24.
|
|
36
|
-
"@sqlrooms/room-shell": "0.24.
|
|
37
|
-
"@sqlrooms/schema-tree": "0.24.
|
|
38
|
-
"@sqlrooms/sql-editor-config": "0.24.
|
|
39
|
-
"@sqlrooms/ui": "0.24.
|
|
40
|
-
"@sqlrooms/utils": "0.24.
|
|
31
|
+
"@sqlrooms/data-table": "0.24.5",
|
|
32
|
+
"@sqlrooms/duckdb": "0.24.5",
|
|
33
|
+
"@sqlrooms/layout": "0.24.5",
|
|
34
|
+
"@sqlrooms/monaco-editor": "0.24.5",
|
|
35
|
+
"@sqlrooms/room-config": "0.24.5",
|
|
36
|
+
"@sqlrooms/room-shell": "0.24.5",
|
|
37
|
+
"@sqlrooms/schema-tree": "0.24.5",
|
|
38
|
+
"@sqlrooms/sql-editor-config": "0.24.5",
|
|
39
|
+
"@sqlrooms/ui": "0.24.5",
|
|
40
|
+
"@sqlrooms/utils": "0.24.5",
|
|
41
41
|
"d3-dsv": "^3.0.1",
|
|
42
42
|
"file-saver": "^2.0.5",
|
|
43
43
|
"immer": "^10.1.1",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"@types/react": "^19.1.7",
|
|
59
59
|
"@types/react-dom": "^19.1.6"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "393aee155a8954a9e5b7e792e6f98118182f2cc3"
|
|
62
62
|
}
|