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
package/dist/index.node.js
CHANGED
|
@@ -17,86 +17,6 @@ const function_factory_1 = __importDefault(require("./parsing/functions/function
|
|
|
17
17
|
exports.FunctionFactory = function_factory_1.default;
|
|
18
18
|
const function_1 = __importDefault(require("./parsing/functions/function"));
|
|
19
19
|
exports.Function = function_1.default;
|
|
20
|
-
/**
|
|
21
|
-
* Register a synchronous plugin function.
|
|
22
|
-
*
|
|
23
|
-
* @param name - The function name
|
|
24
|
-
* @param factoryOrOptions - Factory function or options object with metadata
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```javascript
|
|
28
|
-
* // Simple registration
|
|
29
|
-
* FlowQuery.registerFunction("uppercase", () => new MyUpperCaseFunction());
|
|
30
|
-
*
|
|
31
|
-
* // Registration with metadata for LLM consumption
|
|
32
|
-
* FlowQuery.registerFunction("uppercase", {
|
|
33
|
-
* factory: () => new MyUpperCaseFunction(),
|
|
34
|
-
* metadata: {
|
|
35
|
-
* name: "uppercase",
|
|
36
|
-
* description: "Converts a string to uppercase",
|
|
37
|
-
* category: "string",
|
|
38
|
-
* parameters: [{ name: "text", description: "String to convert", type: "string" }],
|
|
39
|
-
* output: { description: "Uppercase string", type: "string" },
|
|
40
|
-
* examples: ["WITH 'hello' AS s RETURN uppercase(s)"]
|
|
41
|
-
* }
|
|
42
|
-
* });
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
runner_1.default.registerFunction = function (name, factoryOrOptions) {
|
|
46
|
-
function_factory_1.default.register(name, factoryOrOptions);
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Unregister a synchronous plugin function.
|
|
50
|
-
*
|
|
51
|
-
* @param name - The function name
|
|
52
|
-
*/
|
|
53
|
-
runner_1.default.unregisterFunction = function (name) {
|
|
54
|
-
function_factory_1.default.unregister(name);
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Register an async data provider function for use in LOAD operations.
|
|
58
|
-
*
|
|
59
|
-
* @param name - The function name
|
|
60
|
-
* @param providerOrOptions - Async provider or options object with metadata
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```javascript
|
|
64
|
-
* // Registration with metadata for LLM consumption
|
|
65
|
-
* FlowQuery.registerAsyncProvider("fetchUsers", {
|
|
66
|
-
* provider: async function* (endpoint) {
|
|
67
|
-
* const response = await fetch(endpoint);
|
|
68
|
-
* const data = await response.json();
|
|
69
|
-
* for (const item of data) yield item;
|
|
70
|
-
* },
|
|
71
|
-
* metadata: {
|
|
72
|
-
* name: "fetchUsers",
|
|
73
|
-
* description: "Fetches user data from an API",
|
|
74
|
-
* category: "data",
|
|
75
|
-
* parameters: [{ name: "endpoint", description: "API URL", type: "string" }],
|
|
76
|
-
* output: {
|
|
77
|
-
* description: "User object",
|
|
78
|
-
* type: "object",
|
|
79
|
-
* properties: {
|
|
80
|
-
* id: { description: "User ID", type: "number" },
|
|
81
|
-
* name: { description: "User name", type: "string" }
|
|
82
|
-
* }
|
|
83
|
-
* },
|
|
84
|
-
* examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
|
|
85
|
-
* }
|
|
86
|
-
* });
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
runner_1.default.registerAsyncProvider = function (name, providerOrOptions) {
|
|
90
|
-
function_factory_1.default.registerAsyncProvider(name, providerOrOptions);
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Unregister an async data provider function.
|
|
94
|
-
*
|
|
95
|
-
* @param name - The function name
|
|
96
|
-
*/
|
|
97
|
-
runner_1.default.unregisterAsyncProvider = function (name) {
|
|
98
|
-
function_factory_1.default.unregisterAsyncProvider(name);
|
|
99
|
-
};
|
|
100
20
|
/**
|
|
101
21
|
* List all registered functions with their metadata.
|
|
102
22
|
*
|
package/dist/index.node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAsD;
|
|
1
|
+
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAsD;AAoClD,0FApCe,gBAAS,OAoCf;AAnCb,4FAA0F;AAqCtF,0BArCG,0BAAe,CAqCH;AA/BnB,4EAAoD;AA8BhD,mBA9BG,kBAAQ,CA8BH;AA5BZ;;;;;GAKG;AACH,gBAAS,CAAC,aAAa,GAAG,UAAS,OAAwE;IACvG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,gBAAS,CAAC,mBAAmB,GAAG,UAAS,IAAY;IACjD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,gBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,gBAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avg.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/avg.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,cAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"avg.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/avg.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAG/C,cAAM,iBAAkB,SAAQ,cAAc;IAC1C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAuB;IACnC,IAAW,KAAK,IAAI,MAAM,GAAG,IAAI,CAKhC;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAO7B;CACJ;AAED,cASM,GAAI,SAAQ,iBAAiB;;IAKxB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAGxC,OAAO,IAAI,iBAAiB;CAGtC;AAED,eAAe,GAAG,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 aggregate_function_1 = __importDefault(require("./aggregate_function"));
|
|
7
13
|
const reducer_element_1 = __importDefault(require("./reducer_element"));
|
|
14
|
+
const function_metadata_1 = require("./function_metadata");
|
|
8
15
|
class AvgReducerElement extends reducer_element_1.default {
|
|
9
16
|
constructor() {
|
|
10
17
|
super(...arguments);
|
|
@@ -27,7 +34,7 @@ class AvgReducerElement extends reducer_element_1.default {
|
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
|
-
class Avg extends aggregate_function_1.default {
|
|
37
|
+
let Avg = class Avg extends aggregate_function_1.default {
|
|
31
38
|
constructor() {
|
|
32
39
|
super("avg");
|
|
33
40
|
this._expectedParameterCount = 1;
|
|
@@ -38,6 +45,17 @@ class Avg extends aggregate_function_1.default {
|
|
|
38
45
|
element() {
|
|
39
46
|
return new AvgReducerElement();
|
|
40
47
|
}
|
|
41
|
-
}
|
|
48
|
+
};
|
|
49
|
+
Avg = __decorate([
|
|
50
|
+
(0, function_metadata_1.FunctionDef)({
|
|
51
|
+
description: "Calculates the average of numeric values across grouped rows",
|
|
52
|
+
category: "aggregate",
|
|
53
|
+
parameters: [
|
|
54
|
+
{ name: "value", description: "Numeric value to average", type: "number" }
|
|
55
|
+
],
|
|
56
|
+
output: { description: "Average of all values", type: "number", example: 50 },
|
|
57
|
+
examples: ["WITH [10, 20, 30] AS nums UNWIND nums AS n RETURN avg(n)"]
|
|
58
|
+
})
|
|
59
|
+
], Avg);
|
|
42
60
|
exports.default = Avg;
|
|
43
61
|
//# sourceMappingURL=avg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avg.js","sourceRoot":"","sources":["../../../src/parsing/functions/avg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"avg.js","sourceRoot":"","sources":["../../../src/parsing/functions/avg.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8EAAqD;AAErD,wEAA+C;AAC/C,2DAAkD;AAElD,MAAM,iBAAkB,SAAQ,yBAAc;IAA9C;;QACY,WAAM,GAAW,CAAC,CAAC;QACnB,SAAI,GAAkB,IAAI,CAAC;IAevC,CAAC;IAdG,IAAW,KAAK;QACZ,IAAG,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,IAAW,KAAK,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAG,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,CAAC;IACL,CAAC;CACJ;AAWD,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,4BAAiB;IAC/B;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,OAA0B;QACpC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACM,OAAO;QACV,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACnC,CAAC;CACJ,CAAA;AAXK,GAAG;IATR,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC7E;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7E,QAAQ,EAAE,CAAC,0DAA0D,CAAC;KACzE,CAAC;GACI,GAAG,CAWR;AAED,kBAAe,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/collect.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,cAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/collect.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAG/C,cAAM,qBAAsB,SAAQ,cAAc;IAC9C,OAAO,CAAC,MAAM,CAAa;IAC3B,IAAW,KAAK,IAAI,GAAG,CAEtB;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAE1B;CACJ;AAED,cAAM,6BAA8B,SAAQ,cAAc;IACtD,OAAO,CAAC,MAAM,CAA4B;IAC1C,IAAW,KAAK,IAAI,GAAG,CAEtB;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAK1B;CACJ;AAED,cASM,OAAQ,SAAQ,iBAAiB;IACnC,OAAO,CAAC,SAAS,CAAkB;;IAK5B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAG5C,OAAO,IAAI,qBAAqB,GAAG,6BAA6B;IAGvE,IAAW,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAEpC;CACJ;AAED,eAAe,OAAO,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 aggregate_function_1 = __importDefault(require("./aggregate_function"));
|
|
7
13
|
const reducer_element_1 = __importDefault(require("./reducer_element"));
|
|
14
|
+
const function_metadata_1 = require("./function_metadata");
|
|
8
15
|
class CollectReducerElement extends reducer_element_1.default {
|
|
9
16
|
constructor() {
|
|
10
17
|
super(...arguments);
|
|
@@ -32,7 +39,7 @@ class DistinctCollectReducerElement extends reducer_element_1.default {
|
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
}
|
|
35
|
-
class Collect extends aggregate_function_1.default {
|
|
42
|
+
let Collect = class Collect extends aggregate_function_1.default {
|
|
36
43
|
constructor() {
|
|
37
44
|
super("collect");
|
|
38
45
|
this._distinct = false;
|
|
@@ -47,6 +54,17 @@ class Collect extends aggregate_function_1.default {
|
|
|
47
54
|
set distinct(distinct) {
|
|
48
55
|
this._distinct = distinct;
|
|
49
56
|
}
|
|
50
|
-
}
|
|
57
|
+
};
|
|
58
|
+
Collect = __decorate([
|
|
59
|
+
(0, function_metadata_1.FunctionDef)({
|
|
60
|
+
description: "Collects values into an array across grouped rows",
|
|
61
|
+
category: "aggregate",
|
|
62
|
+
parameters: [
|
|
63
|
+
{ name: "value", description: "Value to collect", type: "any" }
|
|
64
|
+
],
|
|
65
|
+
output: { description: "Array of collected values", type: "array", example: [1, 2, 3] },
|
|
66
|
+
examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN collect(n)"]
|
|
67
|
+
})
|
|
68
|
+
], Collect);
|
|
51
69
|
exports.default = Collect;
|
|
52
70
|
//# sourceMappingURL=collect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/parsing/functions/collect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/parsing/functions/collect.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8EAAqD;AACrD,wEAA+C;AAC/C,2DAAkD;AAElD,MAAM,qBAAsB,SAAQ,yBAAc;IAAlD;;QACY,WAAM,GAAU,EAAE,CAAC;IAO/B,CAAC;IANG,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACJ;AAED,MAAM,6BAA8B,SAAQ,yBAAc;IAA1D;;QACY,WAAM,GAAkB,IAAI,GAAG,EAAE,CAAC;IAU9C,CAAC;IATG,IAAW,KAAK;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,MAAM,GAAG,GAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;CACJ;AAWD,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,4BAAiB;IAEnC;QACI,KAAK,CAAC,SAAS,CAAC,CAAC;QAFb,cAAS,GAAY,KAAK,CAAC;QAG/B,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,OAA8B;QACxC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACM,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,6BAA6B,EAAE,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC;IAC9F,CAAC;IACD,IAAW,QAAQ,CAAC,QAAiB;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;CACJ,CAAA;AAfK,OAAO;IATZ,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,mDAAmD;QAChE,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE;SAClE;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;QACvF,QAAQ,EAAE,CAAC,2DAA2D,CAAC;KAC1E,CAAC;GACI,OAAO,CAeZ;AAED,kBAAe,OAAO,CAAC"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import Function from "./function";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
import PredicateFunction from "./predicate_function";
|
|
3
|
+
import "./sum";
|
|
4
|
+
import "./collect";
|
|
5
|
+
import "./avg";
|
|
6
|
+
import "./range";
|
|
7
|
+
import "./rand";
|
|
8
|
+
import "./round";
|
|
9
|
+
import "./split";
|
|
10
|
+
import "./join";
|
|
11
|
+
import "./to_json";
|
|
12
|
+
import "./replace";
|
|
13
|
+
import "./stringify";
|
|
14
|
+
import "./size";
|
|
15
|
+
import "./functions";
|
|
16
|
+
import "./predicate_sum";
|
|
17
|
+
import { FunctionMetadata, AsyncDataProvider } from "./function_metadata";
|
|
18
|
+
export { AsyncDataProvider };
|
|
12
19
|
/**
|
|
13
20
|
* Factory for creating function instances by name.
|
|
14
21
|
*
|
|
22
|
+
* All functions are registered via the @FunctionDef decorator.
|
|
15
23
|
* Maps function names (case-insensitive) to their corresponding implementation classes.
|
|
16
24
|
* Supports built-in functions like sum, avg, collect, range, split, join, etc.
|
|
17
25
|
*
|
|
@@ -22,74 +30,6 @@ export type AsyncDataProvider = (...args: any[]) => AsyncGenerator<any, void, un
|
|
|
22
30
|
* ```
|
|
23
31
|
*/
|
|
24
32
|
declare class FunctionFactory {
|
|
25
|
-
/**
|
|
26
|
-
* Registry for plugin functions (synchronous).
|
|
27
|
-
*/
|
|
28
|
-
private static plugins;
|
|
29
|
-
/**
|
|
30
|
-
* Registry for async data provider functions used in LOAD operations.
|
|
31
|
-
*/
|
|
32
|
-
private static asyncProviders;
|
|
33
|
-
/**
|
|
34
|
-
* Registry for function metadata (both sync and async).
|
|
35
|
-
*/
|
|
36
|
-
private static metadata;
|
|
37
|
-
/**
|
|
38
|
-
* Registers a synchronous plugin function.
|
|
39
|
-
*
|
|
40
|
-
* @param name - The function name (will be lowercased)
|
|
41
|
-
* @param factoryOrOptions - Factory function or options object with metadata
|
|
42
|
-
*/
|
|
43
|
-
static register(name: string, factoryOrOptions: FunctionCreator | RegisterFunctionOptions): void;
|
|
44
|
-
/**
|
|
45
|
-
* Unregisters a synchronous plugin function.
|
|
46
|
-
*
|
|
47
|
-
* @param name - The function name to unregister
|
|
48
|
-
*/
|
|
49
|
-
static unregister(name: string): void;
|
|
50
|
-
/**
|
|
51
|
-
* Registers an async data provider function for use in LOAD operations.
|
|
52
|
-
*
|
|
53
|
-
* @param name - The function name (will be lowercased)
|
|
54
|
-
* @param providerOrOptions - Async provider or options object with metadata
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```typescript
|
|
58
|
-
* // Register with metadata for LLM consumption
|
|
59
|
-
* FunctionFactory.registerAsyncProvider("fetchUsers", {
|
|
60
|
-
* provider: async function* (endpoint: string) {
|
|
61
|
-
* const response = await fetch(endpoint);
|
|
62
|
-
* const data = await response.json();
|
|
63
|
-
* for (const item of data) {
|
|
64
|
-
* yield item;
|
|
65
|
-
* }
|
|
66
|
-
* },
|
|
67
|
-
* metadata: {
|
|
68
|
-
* name: "fetchUsers",
|
|
69
|
-
* description: "Fetches user data from an API endpoint",
|
|
70
|
-
* parameters: [
|
|
71
|
-
* { name: "endpoint", description: "API endpoint URL", type: "string" }
|
|
72
|
-
* ],
|
|
73
|
-
* output: {
|
|
74
|
-
* description: "User objects",
|
|
75
|
-
* type: "object",
|
|
76
|
-
* properties: {
|
|
77
|
-
* id: { description: "User ID", type: "number" },
|
|
78
|
-
* name: { description: "User name", type: "string" }
|
|
79
|
-
* }
|
|
80
|
-
* },
|
|
81
|
-
* examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
|
|
82
|
-
* }
|
|
83
|
-
* });
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
static registerAsyncProvider(name: string, providerOrOptions: AsyncDataProvider | RegisterAsyncProviderOptions): void;
|
|
87
|
-
/**
|
|
88
|
-
* Unregisters an async data provider function.
|
|
89
|
-
*
|
|
90
|
-
* @param name - The function name to unregister
|
|
91
|
-
*/
|
|
92
|
-
static unregisterAsyncProvider(name: string): void;
|
|
93
33
|
/**
|
|
94
34
|
* Gets an async data provider by name.
|
|
95
35
|
*
|
|
@@ -113,14 +53,12 @@ declare class FunctionFactory {
|
|
|
113
53
|
static getMetadata(name: string): FunctionMetadata | undefined;
|
|
114
54
|
/**
|
|
115
55
|
* Lists all registered functions with their metadata.
|
|
116
|
-
* Includes both built-in and plugin functions.
|
|
117
56
|
*
|
|
118
57
|
* @param options - Optional filter options
|
|
119
58
|
* @returns Array of function metadata
|
|
120
59
|
*/
|
|
121
60
|
static listFunctions(options?: {
|
|
122
61
|
category?: string;
|
|
123
|
-
includeBuiltins?: boolean;
|
|
124
62
|
asyncOnly?: boolean;
|
|
125
63
|
syncOnly?: boolean;
|
|
126
64
|
}): FunctionMetadata[];
|
|
@@ -146,6 +84,14 @@ declare class FunctionFactory {
|
|
|
146
84
|
* @returns A Function instance of the appropriate type
|
|
147
85
|
*/
|
|
148
86
|
static create(name: string): Function;
|
|
87
|
+
/**
|
|
88
|
+
* Creates a predicate function instance by name.
|
|
89
|
+
* Predicate functions are used in WHERE clauses with quantifiers (e.g., ANY, ALL).
|
|
90
|
+
*
|
|
91
|
+
* @param name - The function name (case-insensitive)
|
|
92
|
+
* @returns A PredicateFunction instance of the appropriate type
|
|
93
|
+
*/
|
|
94
|
+
static createPredicate(name: string): PredicateFunction;
|
|
149
95
|
}
|
|
150
96
|
export default FunctionFactory;
|
|
151
97
|
//# sourceMappingURL=function_factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,OAAO,CAAC;AACf,OAAO,WAAW,CAAC;AACnB,OAAO,OAAO,CAAC;AACf,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,EACH,gBAAgB,EAKhB,iBAAiB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,cAAM,eAAe;IACjB;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3E;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrE;;;;;OAKG;WACW,aAAa,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,gBAAgB,EAAE;IAatB;;;;OAIG;WACW,iBAAiB,IAAI,MAAM,EAAE;IAI3C;;;;OAIG;WACW,MAAM,IAAI;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAM/E;;;;;OAKG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAa5C;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAYjE;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -3,24 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const sum_1 = __importDefault(require("./sum"));
|
|
7
|
-
const collect_1 = __importDefault(require("./collect"));
|
|
8
|
-
const avg_1 = __importDefault(require("./avg"));
|
|
9
|
-
const range_1 = __importDefault(require("./range"));
|
|
10
|
-
const rand_1 = __importDefault(require("./rand"));
|
|
11
|
-
const round_1 = __importDefault(require("./round"));
|
|
12
|
-
const split_1 = __importDefault(require("./split"));
|
|
13
|
-
const join_1 = __importDefault(require("./join"));
|
|
14
|
-
const to_json_1 = __importDefault(require("./to_json"));
|
|
15
|
-
const replace_1 = __importDefault(require("./replace"));
|
|
16
|
-
const stringify_1 = __importDefault(require("./stringify"));
|
|
17
|
-
const size_1 = __importDefault(require("./size"));
|
|
18
|
-
const functions_1 = __importDefault(require("./functions"));
|
|
19
6
|
const function_1 = __importDefault(require("./function"));
|
|
7
|
+
const predicate_function_1 = __importDefault(require("./predicate_function"));
|
|
8
|
+
// Import built-in functions to ensure their @FunctionDef decorators run
|
|
9
|
+
require("./sum");
|
|
10
|
+
require("./collect");
|
|
11
|
+
require("./avg");
|
|
12
|
+
require("./range");
|
|
13
|
+
require("./rand");
|
|
14
|
+
require("./round");
|
|
15
|
+
require("./split");
|
|
16
|
+
require("./join");
|
|
17
|
+
require("./to_json");
|
|
18
|
+
require("./replace");
|
|
19
|
+
require("./stringify");
|
|
20
|
+
require("./size");
|
|
21
|
+
require("./functions");
|
|
22
|
+
require("./predicate_sum");
|
|
20
23
|
const function_metadata_1 = require("./function_metadata");
|
|
21
24
|
/**
|
|
22
25
|
* Factory for creating function instances by name.
|
|
23
26
|
*
|
|
27
|
+
* All functions are registered via the @FunctionDef decorator.
|
|
24
28
|
* Maps function names (case-insensitive) to their corresponding implementation classes.
|
|
25
29
|
* Supports built-in functions like sum, avg, collect, range, split, join, etc.
|
|
26
30
|
*
|
|
@@ -31,88 +35,6 @@ const function_metadata_1 = require("./function_metadata");
|
|
|
31
35
|
* ```
|
|
32
36
|
*/
|
|
33
37
|
class FunctionFactory {
|
|
34
|
-
/**
|
|
35
|
-
* Registers a synchronous plugin function.
|
|
36
|
-
*
|
|
37
|
-
* @param name - The function name (will be lowercased)
|
|
38
|
-
* @param factoryOrOptions - Factory function or options object with metadata
|
|
39
|
-
*/
|
|
40
|
-
static register(name, factoryOrOptions) {
|
|
41
|
-
const lowerName = name.toLowerCase();
|
|
42
|
-
if (typeof factoryOrOptions === 'function') {
|
|
43
|
-
FunctionFactory.plugins.set(lowerName, factoryOrOptions);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
FunctionFactory.plugins.set(lowerName, factoryOrOptions.factory);
|
|
47
|
-
FunctionFactory.metadata.set(lowerName, Object.assign(Object.assign({}, factoryOrOptions.metadata), { name: lowerName, isAsyncProvider: false }));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Unregisters a synchronous plugin function.
|
|
52
|
-
*
|
|
53
|
-
* @param name - The function name to unregister
|
|
54
|
-
*/
|
|
55
|
-
static unregister(name) {
|
|
56
|
-
const lowerName = name.toLowerCase();
|
|
57
|
-
FunctionFactory.plugins.delete(lowerName);
|
|
58
|
-
FunctionFactory.metadata.delete(lowerName);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Registers an async data provider function for use in LOAD operations.
|
|
62
|
-
*
|
|
63
|
-
* @param name - The function name (will be lowercased)
|
|
64
|
-
* @param providerOrOptions - Async provider or options object with metadata
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```typescript
|
|
68
|
-
* // Register with metadata for LLM consumption
|
|
69
|
-
* FunctionFactory.registerAsyncProvider("fetchUsers", {
|
|
70
|
-
* provider: async function* (endpoint: string) {
|
|
71
|
-
* const response = await fetch(endpoint);
|
|
72
|
-
* const data = await response.json();
|
|
73
|
-
* for (const item of data) {
|
|
74
|
-
* yield item;
|
|
75
|
-
* }
|
|
76
|
-
* },
|
|
77
|
-
* metadata: {
|
|
78
|
-
* name: "fetchUsers",
|
|
79
|
-
* description: "Fetches user data from an API endpoint",
|
|
80
|
-
* parameters: [
|
|
81
|
-
* { name: "endpoint", description: "API endpoint URL", type: "string" }
|
|
82
|
-
* ],
|
|
83
|
-
* output: {
|
|
84
|
-
* description: "User objects",
|
|
85
|
-
* type: "object",
|
|
86
|
-
* properties: {
|
|
87
|
-
* id: { description: "User ID", type: "number" },
|
|
88
|
-
* name: { description: "User name", type: "string" }
|
|
89
|
-
* }
|
|
90
|
-
* },
|
|
91
|
-
* examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
|
|
92
|
-
* }
|
|
93
|
-
* });
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
static registerAsyncProvider(name, providerOrOptions) {
|
|
97
|
-
const lowerName = name.toLowerCase();
|
|
98
|
-
if (typeof providerOrOptions === 'function') {
|
|
99
|
-
FunctionFactory.asyncProviders.set(lowerName, providerOrOptions);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
FunctionFactory.asyncProviders.set(lowerName, providerOrOptions.provider);
|
|
103
|
-
FunctionFactory.metadata.set(lowerName, Object.assign(Object.assign({}, providerOrOptions.metadata), { name: lowerName, isAsyncProvider: true }));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Unregisters an async data provider function.
|
|
108
|
-
*
|
|
109
|
-
* @param name - The function name to unregister
|
|
110
|
-
*/
|
|
111
|
-
static unregisterAsyncProvider(name) {
|
|
112
|
-
const lowerName = name.toLowerCase();
|
|
113
|
-
FunctionFactory.asyncProviders.delete(lowerName);
|
|
114
|
-
FunctionFactory.metadata.delete(lowerName);
|
|
115
|
-
}
|
|
116
38
|
/**
|
|
117
39
|
* Gets an async data provider by name.
|
|
118
40
|
*
|
|
@@ -120,7 +42,7 @@ class FunctionFactory {
|
|
|
120
42
|
* @returns The async data provider, or undefined if not found
|
|
121
43
|
*/
|
|
122
44
|
static getAsyncProvider(name) {
|
|
123
|
-
return
|
|
45
|
+
return (0, function_metadata_1.getRegisteredAsyncProvider)(name.toLowerCase());
|
|
124
46
|
}
|
|
125
47
|
/**
|
|
126
48
|
* Checks if a function name is registered as an async data provider.
|
|
@@ -129,7 +51,7 @@ class FunctionFactory {
|
|
|
129
51
|
* @returns True if the function is an async data provider
|
|
130
52
|
*/
|
|
131
53
|
static isAsyncProvider(name) {
|
|
132
|
-
return
|
|
54
|
+
return (0, function_metadata_1.getRegisteredAsyncProvider)(name.toLowerCase()) !== undefined;
|
|
133
55
|
}
|
|
134
56
|
/**
|
|
135
57
|
* Gets metadata for a specific function.
|
|
@@ -138,41 +60,22 @@ class FunctionFactory {
|
|
|
138
60
|
* @returns The function metadata, or undefined if not found
|
|
139
61
|
*/
|
|
140
62
|
static getMetadata(name) {
|
|
141
|
-
|
|
142
|
-
// Check plugin metadata first
|
|
143
|
-
if (FunctionFactory.metadata.has(lowerName)) {
|
|
144
|
-
return FunctionFactory.metadata.get(lowerName);
|
|
145
|
-
}
|
|
146
|
-
// Fall back to built-in metadata
|
|
147
|
-
return function_metadata_1.BUILTIN_FUNCTION_METADATA.find(m => m.name === lowerName);
|
|
63
|
+
return (0, function_metadata_1.getFunctionMetadata)(name.toLowerCase());
|
|
148
64
|
}
|
|
149
65
|
/**
|
|
150
66
|
* Lists all registered functions with their metadata.
|
|
151
|
-
* Includes both built-in and plugin functions.
|
|
152
67
|
*
|
|
153
68
|
* @param options - Optional filter options
|
|
154
69
|
* @returns Array of function metadata
|
|
155
70
|
*/
|
|
156
71
|
static listFunctions(options) {
|
|
157
72
|
const result = [];
|
|
158
|
-
const
|
|
159
|
-
// Add built-in functions
|
|
160
|
-
if (includeBuiltins) {
|
|
161
|
-
for (const meta of function_metadata_1.BUILTIN_FUNCTION_METADATA) {
|
|
162
|
-
if ((options === null || options === void 0 ? void 0 : options.category) && meta.category !== options.category)
|
|
163
|
-
continue;
|
|
164
|
-
if (options === null || options === void 0 ? void 0 : options.asyncOnly)
|
|
165
|
-
continue; // Built-ins are sync
|
|
166
|
-
result.push(meta);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Add plugin functions
|
|
170
|
-
for (const [name, meta] of FunctionFactory.metadata) {
|
|
73
|
+
for (const meta of (0, function_metadata_1.getRegisteredFunctionMetadata)()) {
|
|
171
74
|
if ((options === null || options === void 0 ? void 0 : options.category) && meta.category !== options.category)
|
|
172
75
|
continue;
|
|
173
|
-
if ((options === null || options === void 0 ? void 0 : options.asyncOnly) &&
|
|
76
|
+
if ((options === null || options === void 0 ? void 0 : options.asyncOnly) && meta.category !== 'async')
|
|
174
77
|
continue;
|
|
175
|
-
if ((options === null || options === void 0 ? void 0 : options.syncOnly) && meta.
|
|
78
|
+
if ((options === null || options === void 0 ? void 0 : options.syncOnly) && meta.category === 'async')
|
|
176
79
|
continue;
|
|
177
80
|
result.push(meta);
|
|
178
81
|
}
|
|
@@ -184,10 +87,7 @@ class FunctionFactory {
|
|
|
184
87
|
* @returns Array of function names
|
|
185
88
|
*/
|
|
186
89
|
static listFunctionNames() {
|
|
187
|
-
|
|
188
|
-
const pluginNames = Array.from(FunctionFactory.plugins.keys());
|
|
189
|
-
const asyncNames = Array.from(FunctionFactory.asyncProviders.keys());
|
|
190
|
-
return [...new Set([...builtinNames, ...pluginNames, ...asyncNames])];
|
|
90
|
+
return (0, function_metadata_1.getRegisteredFunctionMetadata)().map(m => m.name);
|
|
191
91
|
}
|
|
192
92
|
/**
|
|
193
93
|
* Gets all function metadata as a JSON-serializable object for LLM consumption.
|
|
@@ -207,53 +107,31 @@ class FunctionFactory {
|
|
|
207
107
|
*/
|
|
208
108
|
static create(name) {
|
|
209
109
|
const lowerName = name.toLowerCase();
|
|
210
|
-
// Check
|
|
211
|
-
|
|
212
|
-
|
|
110
|
+
// Check decorator-registered functions (built-ins use @FunctionDef)
|
|
111
|
+
const decoratorFactory = (0, function_metadata_1.getRegisteredFunctionFactory)(lowerName);
|
|
112
|
+
if (decoratorFactory) {
|
|
113
|
+
return decoratorFactory();
|
|
213
114
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return new join_1.default();
|
|
231
|
-
case "tojson":
|
|
232
|
-
return new to_json_1.default();
|
|
233
|
-
case "replace":
|
|
234
|
-
return new replace_1.default();
|
|
235
|
-
case "stringify":
|
|
236
|
-
return new stringify_1.default();
|
|
237
|
-
case "size":
|
|
238
|
-
return new size_1.default();
|
|
239
|
-
case "functions":
|
|
240
|
-
return new functions_1.default();
|
|
241
|
-
default:
|
|
242
|
-
return new function_1.default(name);
|
|
115
|
+
// Unknown function - return generic Function instance
|
|
116
|
+
return new function_1.default(name);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Creates a predicate function instance by name.
|
|
120
|
+
* Predicate functions are used in WHERE clauses with quantifiers (e.g., ANY, ALL).
|
|
121
|
+
*
|
|
122
|
+
* @param name - The function name (case-insensitive)
|
|
123
|
+
* @returns A PredicateFunction instance of the appropriate type
|
|
124
|
+
*/
|
|
125
|
+
static createPredicate(name) {
|
|
126
|
+
const lowerName = name.toLowerCase();
|
|
127
|
+
// Check decorator-registered predicate functions
|
|
128
|
+
const decoratorFactory = (0, function_metadata_1.getRegisteredFunctionFactory)(lowerName, 'predicate');
|
|
129
|
+
if (decoratorFactory) {
|
|
130
|
+
return decoratorFactory();
|
|
243
131
|
}
|
|
132
|
+
// Unknown predicate function - return generic PredicateFunction instance
|
|
133
|
+
return new predicate_function_1.default(name);
|
|
244
134
|
}
|
|
245
135
|
}
|
|
246
|
-
/**
|
|
247
|
-
* Registry for plugin functions (synchronous).
|
|
248
|
-
*/
|
|
249
|
-
FunctionFactory.plugins = new Map();
|
|
250
|
-
/**
|
|
251
|
-
* Registry for async data provider functions used in LOAD operations.
|
|
252
|
-
*/
|
|
253
|
-
FunctionFactory.asyncProviders = new Map();
|
|
254
|
-
/**
|
|
255
|
-
* Registry for function metadata (both sync and async).
|
|
256
|
-
*/
|
|
257
|
-
FunctionFactory.metadata = new Map();
|
|
258
136
|
exports.default = FunctionFactory;
|
|
259
137
|
//# sourceMappingURL=function_factory.js.map
|