flowquery 1.0.5 → 1.0.7
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.
- package/README.md +74 -0
- package/dist/compute/runner.d.ts +1 -22
- package/dist/compute/runner.d.ts.map +1 -1
- package/dist/compute/runner.js.map +1 -1
- package/dist/extensibility.d.ts +35 -0
- package/dist/extensibility.d.ts.map +1 -0
- package/dist/extensibility.js +49 -0
- package/dist/extensibility.js.map +1 -0
- package/dist/flowquery.min.js +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +0 -80
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.d.ts +3 -3
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js +0 -80
- package/dist/index.node.js.map +1 -1
- package/dist/parsing/functions/avg.d.ts.map +1 -1
- package/dist/parsing/functions/avg.js +20 -2
- package/dist/parsing/functions/avg.js.map +1 -1
- package/dist/parsing/functions/collect.d.ts.map +1 -1
- package/dist/parsing/functions/collect.js +20 -2
- package/dist/parsing/functions/collect.js.map +1 -1
- package/dist/parsing/functions/function_factory.d.ts +26 -80
- package/dist/parsing/functions/function_factory.d.ts.map +1 -1
- package/dist/parsing/functions/function_factory.js +46 -168
- package/dist/parsing/functions/function_factory.js.map +1 -1
- package/dist/parsing/functions/function_metadata.d.ts +81 -20
- package/dist/parsing/functions/function_metadata.d.ts.map +1 -1
- package/dist/parsing/functions/function_metadata.js +154 -152
- package/dist/parsing/functions/function_metadata.js.map +1 -1
- package/dist/parsing/functions/functions.d.ts.map +1 -1
- package/dist/parsing/functions/functions.js +37 -2
- package/dist/parsing/functions/functions.js.map +1 -1
- package/dist/parsing/functions/join.d.ts.map +1 -1
- package/dist/parsing/functions/join.js +21 -2
- package/dist/parsing/functions/join.js.map +1 -1
- package/dist/parsing/functions/predicate_function.d.ts +1 -0
- package/dist/parsing/functions/predicate_function.d.ts.map +1 -1
- package/dist/parsing/functions/predicate_function.js +3 -0
- package/dist/parsing/functions/predicate_function.js.map +1 -1
- package/dist/parsing/functions/predicate_sum.d.ts.map +1 -1
- package/dist/parsing/functions/predicate_sum.js +23 -2
- package/dist/parsing/functions/predicate_sum.js.map +1 -1
- package/dist/parsing/functions/rand.d.ts.map +1 -1
- package/dist/parsing/functions/rand.js +18 -2
- package/dist/parsing/functions/rand.js.map +1 -1
- package/dist/parsing/functions/range.d.ts.map +1 -1
- package/dist/parsing/functions/range.js +21 -2
- package/dist/parsing/functions/range.js.map +1 -1
- package/dist/parsing/functions/replace.d.ts.map +1 -1
- package/dist/parsing/functions/replace.js +22 -2
- package/dist/parsing/functions/replace.js.map +1 -1
- package/dist/parsing/functions/round.d.ts.map +1 -1
- package/dist/parsing/functions/round.js +20 -2
- package/dist/parsing/functions/round.js.map +1 -1
- package/dist/parsing/functions/size.d.ts.map +1 -1
- package/dist/parsing/functions/size.js +20 -2
- package/dist/parsing/functions/size.js.map +1 -1
- package/dist/parsing/functions/split.d.ts.map +1 -1
- package/dist/parsing/functions/split.js +21 -2
- package/dist/parsing/functions/split.js.map +1 -1
- package/dist/parsing/functions/stringify.d.ts.map +1 -1
- package/dist/parsing/functions/stringify.js +20 -2
- package/dist/parsing/functions/stringify.js.map +1 -1
- package/dist/parsing/functions/sum.d.ts.map +1 -1
- package/dist/parsing/functions/sum.js +20 -2
- package/dist/parsing/functions/sum.js.map +1 -1
- package/dist/parsing/functions/to_json.d.ts.map +1 -1
- package/dist/parsing/functions/to_json.js +20 -2
- package/dist/parsing/functions/to_json.js.map +1 -1
- package/dist/parsing/parser.d.ts.map +1 -1
- package/dist/parsing/parser.js +1 -2
- package/dist/parsing/parser.js.map +1 -1
- package/docs/flowquery.min.js +1 -1
- package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
- package/misc/apps/RAG/.env.example +14 -0
- package/misc/apps/RAG/README.md +0 -7
- package/misc/apps/RAG/package.json +16 -7
- package/misc/apps/RAG/public/index.html +18 -0
- package/misc/apps/RAG/src/App.css +42 -0
- package/misc/apps/RAG/src/App.tsx +50 -0
- package/misc/apps/RAG/src/components/ApiKeySettings.tsx +245 -0
- package/misc/apps/RAG/src/components/ChatContainer.css +67 -0
- package/misc/apps/RAG/src/components/ChatContainer.tsx +239 -0
- package/misc/apps/RAG/src/components/ChatInput.css +23 -0
- package/misc/apps/RAG/src/components/ChatInput.tsx +62 -0
- package/misc/apps/RAG/src/components/ChatMessage.css +136 -0
- package/misc/apps/RAG/src/components/ChatMessage.tsx +152 -0
- package/misc/apps/RAG/src/components/FlowQueryAgent.ts +390 -0
- package/misc/apps/RAG/src/components/FlowQueryRunner.css +104 -0
- package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +332 -0
- package/misc/apps/RAG/src/components/index.ts +15 -0
- package/misc/apps/RAG/src/index.tsx +17 -0
- package/misc/apps/RAG/src/plugins/README.md +139 -0
- package/misc/apps/RAG/src/plugins/index.ts +68 -0
- package/misc/apps/RAG/src/plugins/loaders/CatFacts.ts +75 -0
- package/misc/apps/RAG/src/plugins/loaders/FetchJson.ts +67 -0
- package/misc/apps/RAG/src/plugins/loaders/Llm.ts +437 -0
- package/misc/apps/RAG/src/plugins/loaders/MockData.ts +151 -0
- package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +385 -0
- package/misc/apps/RAG/src/prompts/index.ts +10 -0
- package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +131 -0
- package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +203 -0
- package/misc/apps/RAG/src/utils/index.ts +9 -0
- package/misc/apps/RAG/tsconfig.json +4 -2
- package/misc/apps/RAG/webpack.config.js +23 -12
- package/package.json +7 -1
- package/src/compute/runner.ts +1 -26
- package/src/extensibility.ts +45 -0
- package/src/index.browser.ts +2 -88
- package/src/index.node.ts +3 -92
- package/src/parsing/functions/avg.ts +10 -0
- package/src/parsing/functions/collect.ts +10 -0
- package/src/parsing/functions/function_factory.ts +56 -194
- package/src/parsing/functions/function_metadata.ts +187 -168
- package/src/parsing/functions/functions.ts +27 -0
- package/src/parsing/functions/join.ts +11 -0
- package/src/parsing/functions/predicate_function.ts +4 -0
- package/src/parsing/functions/predicate_sum.ts +13 -0
- package/src/parsing/functions/rand.ts +8 -0
- package/src/parsing/functions/range.ts +11 -0
- package/src/parsing/functions/replace.ts +12 -0
- package/src/parsing/functions/round.ts +10 -0
- package/src/parsing/functions/size.ts +10 -0
- package/src/parsing/functions/split.ts +11 -0
- package/src/parsing/functions/stringify.ts +10 -0
- package/src/parsing/functions/sum.ts +10 -0
- package/src/parsing/functions/to_json.ts +10 -0
- package/src/parsing/parser.ts +1 -2
- package/tests/extensibility.test.ts +563 -0
- package/tsconfig.json +1 -0
- package/dist/parsing/functions/predicate_function_factory.d.ts +0 -6
- package/dist/parsing/functions/predicate_function_factory.d.ts.map +0 -1
- package/dist/parsing/functions/predicate_function_factory.js +0 -19
- package/dist/parsing/functions/predicate_function_factory.js.map +0 -1
- package/misc/apps/RAG/src/index.ts +0 -20
- package/src/parsing/functions/predicate_function_factory.ts +0 -15
- package/tests/parsing/function_plugins.test.ts +0 -369
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Category types for functions.
|
|
3
|
+
* Core categories: scalar, aggregate, predicate, async
|
|
4
|
+
* Additional categories for organization: string, math, data, etc.
|
|
5
|
+
*/
|
|
6
|
+
export type FunctionCategory = "scalar" | "aggregate" | "predicate" | "async" | string;
|
|
1
7
|
/**
|
|
2
8
|
* Schema definition for function arguments and outputs.
|
|
3
9
|
* Compatible with JSON Schema for LLM consumption.
|
|
@@ -45,39 +51,94 @@ export interface FunctionMetadata {
|
|
|
45
51
|
name: string;
|
|
46
52
|
/** Human-readable description of what the function does */
|
|
47
53
|
description: string;
|
|
48
|
-
/** Category
|
|
49
|
-
category
|
|
54
|
+
/** Category that determines function type and behavior */
|
|
55
|
+
category: FunctionCategory;
|
|
50
56
|
/** Array of parameter schemas */
|
|
51
57
|
parameters: ParameterSchema[];
|
|
52
58
|
/** Output schema */
|
|
53
59
|
output: OutputSchema;
|
|
54
60
|
/** Example usage in FlowQuery syntax */
|
|
55
61
|
examples?: string[];
|
|
56
|
-
/** Whether this is an async data provider for LOAD operations */
|
|
57
|
-
isAsyncProvider?: boolean;
|
|
58
62
|
/** Additional notes or caveats */
|
|
59
63
|
notes?: string;
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
62
|
-
*
|
|
66
|
+
* Type for async data provider functions used in LOAD operations.
|
|
63
67
|
*/
|
|
64
|
-
export
|
|
65
|
-
/** Factory function that creates the Function instance */
|
|
66
|
-
factory: () => any;
|
|
67
|
-
/** Function metadata for documentation */
|
|
68
|
-
metadata: FunctionMetadata;
|
|
69
|
-
}
|
|
68
|
+
export type AsyncDataProvider = (...args: any[]) => AsyncGenerator<any, void, unknown> | Promise<any>;
|
|
70
69
|
/**
|
|
71
|
-
*
|
|
70
|
+
* Decorator options - metadata without the name (derived from class).
|
|
72
71
|
*/
|
|
73
|
-
export
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
export type FunctionDefOptions = Omit<FunctionMetadata, 'name'>;
|
|
73
|
+
/**
|
|
74
|
+
* Class decorator that registers function metadata.
|
|
75
|
+
* The function name is derived from the class's constructor call to super() for regular functions,
|
|
76
|
+
* or from the class name for async providers.
|
|
77
|
+
*
|
|
78
|
+
* For async providers (category: "async"), the class must have a `fetch` method that returns
|
|
79
|
+
* an AsyncGenerator. The function name is derived from the class name (removing 'Loader' suffix
|
|
80
|
+
* if present) and converted to camelCase.
|
|
81
|
+
*
|
|
82
|
+
* @param options - Function metadata (excluding name)
|
|
83
|
+
* @returns Class decorator
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // Regular function
|
|
88
|
+
* @FunctionDef({
|
|
89
|
+
* description: "Calculates the sum of numeric values",
|
|
90
|
+
* category: "aggregate",
|
|
91
|
+
* parameters: [{ name: "value", description: "Numeric value to sum", type: "number" }],
|
|
92
|
+
* output: { description: "Sum of all values", type: "number", example: 150 },
|
|
93
|
+
* examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
|
|
94
|
+
* })
|
|
95
|
+
* class Sum extends AggregateFunction { ... }
|
|
96
|
+
*
|
|
97
|
+
* // Async data provider
|
|
98
|
+
* @FunctionDef({
|
|
99
|
+
* description: "Fetches random cat facts from the Cat Facts API",
|
|
100
|
+
* category: "async",
|
|
101
|
+
* parameters: [{ name: "count", description: "Number of facts", type: "number", required: false, default: 1 }],
|
|
102
|
+
* output: { description: "Cat fact object", type: "object" },
|
|
103
|
+
* examples: ["LOAD JSON FROM catFacts(5) AS fact RETURN fact.text"]
|
|
104
|
+
* })
|
|
105
|
+
* class CatFactsLoader {
|
|
106
|
+
* async *fetch(count: number = 1): AsyncGenerator<any> { ... }
|
|
107
|
+
* }
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function FunctionDef(options: FunctionDefOptions): <T extends new (...args: any[]) => any>(constructor: T) => T;
|
|
111
|
+
/**
|
|
112
|
+
* Gets all registered function metadata from decorators.
|
|
113
|
+
*
|
|
114
|
+
* @returns Array of function metadata
|
|
115
|
+
*/
|
|
116
|
+
export declare function getRegisteredFunctionMetadata(): FunctionMetadata[];
|
|
117
|
+
/**
|
|
118
|
+
* Gets a registered function factory by name.
|
|
119
|
+
* Used by FunctionFactory to instantiate decorator-registered functions.
|
|
120
|
+
*
|
|
121
|
+
* @param name - Function name (case-insensitive)
|
|
122
|
+
* @param category - Optional category to disambiguate (e.g., 'predicate')
|
|
123
|
+
* @returns Factory function or undefined
|
|
124
|
+
*/
|
|
125
|
+
export declare function getRegisteredFunctionFactory(name: string, category?: string): (() => any) | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* Gets metadata for a specific function by name.
|
|
128
|
+
* If multiple functions share the same name (e.g., aggregate vs predicate),
|
|
129
|
+
* optionally specify the category to get the specific one.
|
|
130
|
+
*
|
|
131
|
+
* @param name - Function name (case-insensitive)
|
|
132
|
+
* @param category - Optional category to disambiguate
|
|
133
|
+
* @returns Function metadata or undefined
|
|
134
|
+
*/
|
|
135
|
+
export declare function getFunctionMetadata(name: string, category?: string): FunctionMetadata | undefined;
|
|
79
136
|
/**
|
|
80
|
-
*
|
|
137
|
+
* Gets a registered async data provider by name.
|
|
138
|
+
* Used by FunctionFactory to get decorator-registered async providers.
|
|
139
|
+
*
|
|
140
|
+
* @param name - Function name (case-insensitive)
|
|
141
|
+
* @returns Async data provider or undefined
|
|
81
142
|
*/
|
|
82
|
-
export declare
|
|
143
|
+
export declare function getRegisteredAsyncProvider(name: string): AsyncDataProvider | undefined;
|
|
83
144
|
//# sourceMappingURL=function_metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_metadata.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7E,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;IAC/D,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IACxE,6BAA6B;IAC7B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7E,sCAAsC;IACtC,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC1C,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IACxE,2BAA2B;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"function_metadata.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,159 +1,161 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FunctionDef = FunctionDef;
|
|
4
|
+
exports.getRegisteredFunctionMetadata = getRegisteredFunctionMetadata;
|
|
5
|
+
exports.getRegisteredFunctionFactory = getRegisteredFunctionFactory;
|
|
6
|
+
exports.getFunctionMetadata = getFunctionMetadata;
|
|
7
|
+
exports.getRegisteredAsyncProvider = getRegisteredAsyncProvider;
|
|
4
8
|
/**
|
|
5
|
-
*
|
|
9
|
+
* Registry for function metadata collected via decorators.
|
|
6
10
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
output: { description: "Rounded integer", type: "number", example: 4 },
|
|
65
|
-
examples: ["WITH 3.7 AS n RETURN round(n)"]
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: "split",
|
|
69
|
-
description: "Splits a string into an array by a delimiter",
|
|
70
|
-
category: "string",
|
|
71
|
-
parameters: [
|
|
72
|
-
{ name: "text", description: "String to split", type: "string" },
|
|
73
|
-
{ name: "delimiter", description: "Delimiter to split by", type: "string" }
|
|
74
|
-
],
|
|
75
|
-
output: { description: "Array of string parts", type: "array", items: { type: "string" }, example: ["a", "b", "c"] },
|
|
76
|
-
examples: ["WITH 'a,b,c' AS s RETURN split(s, ',')"]
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: "join",
|
|
80
|
-
description: "Joins an array of strings with a delimiter",
|
|
81
|
-
category: "string",
|
|
82
|
-
parameters: [
|
|
83
|
-
{ name: "array", description: "Array of values to join", type: "array" },
|
|
84
|
-
{ name: "delimiter", description: "Delimiter to join with", type: "string" }
|
|
85
|
-
],
|
|
86
|
-
output: { description: "Joined string", type: "string", example: "a,b,c" },
|
|
87
|
-
examples: ["WITH ['a', 'b', 'c'] AS arr RETURN join(arr, ',')"]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: "replace",
|
|
91
|
-
description: "Replaces occurrences of a pattern in a string",
|
|
92
|
-
category: "string",
|
|
93
|
-
parameters: [
|
|
94
|
-
{ name: "text", description: "Source string", type: "string" },
|
|
95
|
-
{ name: "pattern", description: "Pattern to find", type: "string" },
|
|
96
|
-
{ name: "replacement", description: "Replacement string", type: "string" }
|
|
97
|
-
],
|
|
98
|
-
output: { description: "String with replacements", type: "string", example: "hello world" },
|
|
99
|
-
examples: ["WITH 'hello there' AS s RETURN replace(s, 'there', 'world')"]
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: "stringify",
|
|
103
|
-
description: "Converts a value to its JSON string representation",
|
|
104
|
-
category: "conversion",
|
|
105
|
-
parameters: [
|
|
106
|
-
{ name: "value", description: "Value to stringify", type: "any" }
|
|
107
|
-
],
|
|
108
|
-
output: { description: "JSON string", type: "string", example: "{\"a\":1}" },
|
|
109
|
-
examples: ["WITH {a: 1} AS obj RETURN stringify(obj)"]
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
name: "tojson",
|
|
113
|
-
description: "Parses a JSON string into an object",
|
|
114
|
-
category: "conversion",
|
|
115
|
-
parameters: [
|
|
116
|
-
{ name: "text", description: "JSON string to parse", type: "string" }
|
|
117
|
-
],
|
|
118
|
-
output: { description: "Parsed object or array", type: "object", example: { a: 1 } },
|
|
119
|
-
examples: ["WITH '{\"a\": 1}' AS s RETURN tojson(s)"]
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
name: "size",
|
|
123
|
-
description: "Returns the length of an array or string",
|
|
124
|
-
category: "utility",
|
|
125
|
-
parameters: [
|
|
126
|
-
{ name: "value", description: "Array or string to measure", type: "array" }
|
|
127
|
-
],
|
|
128
|
-
output: { description: "Length of the input", type: "number", example: 3 },
|
|
129
|
-
examples: ["WITH [1, 2, 3] AS arr RETURN size(arr)"]
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
name: "functions",
|
|
133
|
-
description: "Lists all registered functions with their metadata. Useful for discovering available functions and their documentation. Results include name, description, parameters, output schema, and usage examples.",
|
|
134
|
-
category: "introspection",
|
|
135
|
-
parameters: [
|
|
136
|
-
{ name: "category", description: "Optional category to filter by (e.g., 'aggregation', 'string', 'math')", type: "string", required: false }
|
|
137
|
-
],
|
|
138
|
-
output: {
|
|
139
|
-
description: "Array of function metadata objects",
|
|
140
|
-
type: "array",
|
|
141
|
-
items: {
|
|
142
|
-
type: "object",
|
|
143
|
-
properties: {
|
|
144
|
-
name: { description: "Function name", type: "string" },
|
|
145
|
-
description: { description: "What the function does", type: "string" },
|
|
146
|
-
category: { description: "Function category", type: "string" },
|
|
147
|
-
parameters: { description: "Array of parameter definitions", type: "array" },
|
|
148
|
-
output: { description: "Output schema", type: "object" },
|
|
149
|
-
examples: { description: "Usage examples", type: "array" }
|
|
150
|
-
}
|
|
11
|
+
const functionMetadataRegistry = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Registry for function factories collected via decorators.
|
|
14
|
+
* Allows @FunctionDef to automatically register functions for instantiation.
|
|
15
|
+
*/
|
|
16
|
+
const functionFactoryRegistry = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* Registry for async data providers collected via decorators.
|
|
19
|
+
*/
|
|
20
|
+
const asyncProviderRegistry = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* Class decorator that registers function metadata.
|
|
23
|
+
* The function name is derived from the class's constructor call to super() for regular functions,
|
|
24
|
+
* or from the class name for async providers.
|
|
25
|
+
*
|
|
26
|
+
* For async providers (category: "async"), the class must have a `fetch` method that returns
|
|
27
|
+
* an AsyncGenerator. The function name is derived from the class name (removing 'Loader' suffix
|
|
28
|
+
* if present) and converted to camelCase.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Function metadata (excluding name)
|
|
31
|
+
* @returns Class decorator
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // Regular function
|
|
36
|
+
* @FunctionDef({
|
|
37
|
+
* description: "Calculates the sum of numeric values",
|
|
38
|
+
* category: "aggregate",
|
|
39
|
+
* parameters: [{ name: "value", description: "Numeric value to sum", type: "number" }],
|
|
40
|
+
* output: { description: "Sum of all values", type: "number", example: 150 },
|
|
41
|
+
* examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
|
|
42
|
+
* })
|
|
43
|
+
* class Sum extends AggregateFunction { ... }
|
|
44
|
+
*
|
|
45
|
+
* // Async data provider
|
|
46
|
+
* @FunctionDef({
|
|
47
|
+
* description: "Fetches random cat facts from the Cat Facts API",
|
|
48
|
+
* category: "async",
|
|
49
|
+
* parameters: [{ name: "count", description: "Number of facts", type: "number", required: false, default: 1 }],
|
|
50
|
+
* output: { description: "Cat fact object", type: "object" },
|
|
51
|
+
* examples: ["LOAD JSON FROM catFacts(5) AS fact RETURN fact.text"]
|
|
52
|
+
* })
|
|
53
|
+
* class CatFactsLoader {
|
|
54
|
+
* async *fetch(count: number = 1): AsyncGenerator<any> { ... }
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function FunctionDef(options) {
|
|
59
|
+
return function (constructor) {
|
|
60
|
+
var _a;
|
|
61
|
+
// Handle async providers differently
|
|
62
|
+
if (options.category === 'async') {
|
|
63
|
+
// Derive the function name from the class name
|
|
64
|
+
// Remove 'Loader' suffix if present and convert to lowercase for registry
|
|
65
|
+
let baseName = constructor.name;
|
|
66
|
+
if (baseName.endsWith('Loader')) {
|
|
67
|
+
baseName = baseName.slice(0, -6);
|
|
151
68
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
69
|
+
// Keep display name in camelCase, but use lowercase for registry keys
|
|
70
|
+
const displayName = baseName.charAt(0).toLowerCase() + baseName.slice(1);
|
|
71
|
+
const registryKey = displayName.toLowerCase();
|
|
72
|
+
// Register metadata with display name
|
|
73
|
+
const metadata = Object.assign({ name: displayName }, options);
|
|
74
|
+
functionMetadataRegistry.set(registryKey, metadata);
|
|
75
|
+
// Register the async provider (wraps the class's fetch method)
|
|
76
|
+
asyncProviderRegistry.set(registryKey, (...args) => new constructor().fetch(...args));
|
|
77
|
+
return constructor;
|
|
78
|
+
}
|
|
79
|
+
// Regular function handling
|
|
80
|
+
// Create an instance to get the function name from super() call
|
|
81
|
+
const instance = new constructor();
|
|
82
|
+
const baseName = ((_a = instance.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || constructor.name.toLowerCase();
|
|
83
|
+
// Use category-qualified key to avoid collisions (e.g., sum vs sum:predicate)
|
|
84
|
+
// but store the display name without the qualifier
|
|
85
|
+
const displayName = baseName.includes(':') ? baseName.split(':')[0] : baseName;
|
|
86
|
+
const registryKey = options.category ? `${displayName}:${options.category}` : displayName;
|
|
87
|
+
// Register metadata with display name but category-qualified key
|
|
88
|
+
const metadata = Object.assign({ name: displayName }, options);
|
|
89
|
+
functionMetadataRegistry.set(registryKey, metadata);
|
|
90
|
+
// Register factory function for automatic instantiation
|
|
91
|
+
// Only register to the simple name if no collision exists (predicate functions use qualified keys)
|
|
92
|
+
if (options.category !== 'predicate') {
|
|
93
|
+
functionFactoryRegistry.set(displayName, () => new constructor());
|
|
94
|
+
}
|
|
95
|
+
functionFactoryRegistry.set(registryKey, () => new constructor());
|
|
96
|
+
return constructor;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets all registered function metadata from decorators.
|
|
101
|
+
*
|
|
102
|
+
* @returns Array of function metadata
|
|
103
|
+
*/
|
|
104
|
+
function getRegisteredFunctionMetadata() {
|
|
105
|
+
return Array.from(functionMetadataRegistry.values());
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Gets a registered function factory by name.
|
|
109
|
+
* Used by FunctionFactory to instantiate decorator-registered functions.
|
|
110
|
+
*
|
|
111
|
+
* @param name - Function name (case-insensitive)
|
|
112
|
+
* @param category - Optional category to disambiguate (e.g., 'predicate')
|
|
113
|
+
* @returns Factory function or undefined
|
|
114
|
+
*/
|
|
115
|
+
function getRegisteredFunctionFactory(name, category) {
|
|
116
|
+
const lowerName = name.toLowerCase();
|
|
117
|
+
// If category specified, look for exact match
|
|
118
|
+
if (category) {
|
|
119
|
+
return functionFactoryRegistry.get(`${lowerName}:${category}`);
|
|
120
|
+
}
|
|
121
|
+
// Try direct match first
|
|
122
|
+
if (functionFactoryRegistry.has(lowerName)) {
|
|
123
|
+
return functionFactoryRegistry.get(lowerName);
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets metadata for a specific function by name.
|
|
129
|
+
* If multiple functions share the same name (e.g., aggregate vs predicate),
|
|
130
|
+
* optionally specify the category to get the specific one.
|
|
131
|
+
*
|
|
132
|
+
* @param name - Function name (case-insensitive)
|
|
133
|
+
* @param category - Optional category to disambiguate
|
|
134
|
+
* @returns Function metadata or undefined
|
|
135
|
+
*/
|
|
136
|
+
function getFunctionMetadata(name, category) {
|
|
137
|
+
const lowerName = name.toLowerCase();
|
|
138
|
+
// If category specified, look for exact match
|
|
139
|
+
if (category) {
|
|
140
|
+
return functionMetadataRegistry.get(`${lowerName}:${category}`);
|
|
141
|
+
}
|
|
142
|
+
// Otherwise, first try direct match (for functions without category conflicts)
|
|
143
|
+
// Then search for any function with matching name
|
|
144
|
+
for (const [key, meta] of functionMetadataRegistry) {
|
|
145
|
+
if (meta.name === lowerName) {
|
|
146
|
+
return meta;
|
|
147
|
+
}
|
|
157
148
|
}
|
|
158
|
-
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Gets a registered async data provider by name.
|
|
153
|
+
* Used by FunctionFactory to get decorator-registered async providers.
|
|
154
|
+
*
|
|
155
|
+
* @param name - Function name (case-insensitive)
|
|
156
|
+
* @returns Async data provider or undefined
|
|
157
|
+
*/
|
|
158
|
+
function getRegisteredAsyncProvider(name) {
|
|
159
|
+
return asyncProviderRegistry.get(name.toLowerCase());
|
|
160
|
+
}
|
|
159
161
|
//# sourceMappingURL=function_metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_metadata.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function_metadata.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC;;;;;;;;;;;;;GAaG;AACH,cA0BM,SAAU,SAAQ,QAAQ;;IAMrB,KAAK,IAAI,GAAG;CAiBtB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
2
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
10
|
};
|
|
5
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
12
|
const function_1 = __importDefault(require("./function"));
|
|
7
13
|
const function_factory_1 = __importDefault(require("./function_factory"));
|
|
14
|
+
const function_metadata_1 = require("./function_metadata");
|
|
8
15
|
/**
|
|
9
16
|
* Built-in function that lists all registered functions with their metadata.
|
|
10
17
|
*
|
|
@@ -19,7 +26,7 @@ const function_factory_1 = __importDefault(require("./function_factory"));
|
|
|
19
26
|
* RETURN func.name, func.description
|
|
20
27
|
* ```
|
|
21
28
|
*/
|
|
22
|
-
class Functions extends function_1.default {
|
|
29
|
+
let Functions = class Functions extends function_1.default {
|
|
23
30
|
constructor() {
|
|
24
31
|
super("functions");
|
|
25
32
|
this._expectedParameterCount = null; // 0 or 1 parameter
|
|
@@ -42,6 +49,34 @@ class Functions extends function_1.default {
|
|
|
42
49
|
throw new Error("functions() takes 0 or 1 parameters");
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
|
-
}
|
|
52
|
+
};
|
|
53
|
+
Functions = __decorate([
|
|
54
|
+
(0, function_metadata_1.FunctionDef)({
|
|
55
|
+
description: "Lists all registered functions with their metadata. Useful for discovering available functions and their documentation. Results include name, description, parameters, output schema, and usage examples.",
|
|
56
|
+
category: "scalar",
|
|
57
|
+
parameters: [
|
|
58
|
+
{ name: "category", description: "Optional category to filter by (e.g., 'aggregation', 'string', 'math')", type: "string", required: false }
|
|
59
|
+
],
|
|
60
|
+
output: {
|
|
61
|
+
description: "Array of function metadata objects",
|
|
62
|
+
type: "array",
|
|
63
|
+
items: {
|
|
64
|
+
type: "object",
|
|
65
|
+
properties: {
|
|
66
|
+
name: { description: "Function name", type: "string" },
|
|
67
|
+
description: { description: "What the function does", type: "string" },
|
|
68
|
+
category: { description: "Function category", type: "string" },
|
|
69
|
+
parameters: { description: "Array of parameter definitions", type: "array" },
|
|
70
|
+
output: { description: "Output schema", type: "object" },
|
|
71
|
+
examples: { description: "Usage examples", type: "array" }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
examples: [
|
|
76
|
+
"WITH functions() AS funcs RETURN funcs",
|
|
77
|
+
"WITH functions('aggregation') AS funcs UNWIND funcs AS f RETURN f.name, f.description"
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
], Functions);
|
|
46
81
|
exports.default = Functions;
|
|
47
82
|
//# sourceMappingURL=functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/parsing/functions/functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/parsing/functions/functions.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,0EAAiD;AACjD,2DAAkD;AAElD;;;;;;;;;;;;;GAaG;AA2BH,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,kBAAQ;IAC5B;QACI,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,mBAAmB;IAC5D,CAAC;IAEM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,uBAAuB;YACvB,OAAO,0BAAe,CAAC,aAAa,EAAE,CAAC;QAC3C,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,qBAAqB;YACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,0BAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;CACJ,CAAA;AAvBK,SAAS;IA1Bd,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,2MAA2M;QACxN,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wEAAwE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/I;QACD,MAAM,EAAE;YACJ,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtD,WAAW,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtE,QAAQ,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9D,UAAU,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC5E,MAAM,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxD,QAAQ,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;iBAC7D;aACJ;SACJ;QACD,QAAQ,EAAE;YACN,wCAAwC;YACxC,uFAAuF;SAC1F;KACJ,CAAC;GACI,SAAS,CAuBd;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/join.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/join.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,cAUM,IAAK,SAAQ,QAAQ;;IAKvB,IAAW,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAKrC;IACM,KAAK,IAAI,GAAG;CAQtB;AAED,eAAe,IAAI,CAAC"}
|