flowquery 1.0.34 → 1.0.36

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.
Files changed (197) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/graph/database.d.ts +1 -0
  3. package/dist/graph/database.d.ts.map +1 -1
  4. package/dist/graph/database.js +43 -6
  5. package/dist/graph/database.js.map +1 -1
  6. package/dist/graph/relationship.d.ts +3 -1
  7. package/dist/graph/relationship.d.ts.map +1 -1
  8. package/dist/graph/relationship.js +12 -4
  9. package/dist/graph/relationship.js.map +1 -1
  10. package/dist/graph/relationship_data.js +1 -1
  11. package/dist/graph/relationship_data.js.map +1 -1
  12. package/dist/graph/relationship_match_collector.d.ts.map +1 -1
  13. package/dist/graph/relationship_match_collector.js +6 -3
  14. package/dist/graph/relationship_match_collector.js.map +1 -1
  15. package/dist/graph/relationship_reference.js +1 -1
  16. package/dist/graph/relationship_reference.js.map +1 -1
  17. package/dist/parsing/data_structures/lookup.d.ts.map +1 -1
  18. package/dist/parsing/data_structures/lookup.js +5 -1
  19. package/dist/parsing/data_structures/lookup.js.map +1 -1
  20. package/dist/parsing/functions/coalesce.d.ts +17 -0
  21. package/dist/parsing/functions/coalesce.d.ts.map +1 -0
  22. package/dist/parsing/functions/coalesce.js +61 -0
  23. package/dist/parsing/functions/coalesce.js.map +1 -0
  24. package/dist/parsing/functions/date.d.ts +22 -0
  25. package/dist/parsing/functions/date.d.ts.map +1 -0
  26. package/dist/parsing/functions/date.js +71 -0
  27. package/dist/parsing/functions/date.js.map +1 -0
  28. package/dist/parsing/functions/datetime.d.ts +22 -0
  29. package/dist/parsing/functions/datetime.d.ts.map +1 -0
  30. package/dist/parsing/functions/datetime.js +71 -0
  31. package/dist/parsing/functions/datetime.js.map +1 -0
  32. package/dist/parsing/functions/duration.d.ts +7 -0
  33. package/dist/parsing/functions/duration.d.ts.map +1 -0
  34. package/dist/parsing/functions/duration.js +145 -0
  35. package/dist/parsing/functions/duration.js.map +1 -0
  36. package/dist/parsing/functions/element_id.d.ts +7 -0
  37. package/dist/parsing/functions/element_id.d.ts.map +1 -0
  38. package/dist/parsing/functions/element_id.js +58 -0
  39. package/dist/parsing/functions/element_id.js.map +1 -0
  40. package/dist/parsing/functions/function_factory.d.ts +21 -0
  41. package/dist/parsing/functions/function_factory.d.ts.map +1 -1
  42. package/dist/parsing/functions/function_factory.js +21 -0
  43. package/dist/parsing/functions/function_factory.js.map +1 -1
  44. package/dist/parsing/functions/head.d.ts +7 -0
  45. package/dist/parsing/functions/head.d.ts.map +1 -0
  46. package/dist/parsing/functions/head.js +53 -0
  47. package/dist/parsing/functions/head.js.map +1 -0
  48. package/dist/parsing/functions/id.d.ts +7 -0
  49. package/dist/parsing/functions/id.d.ts.map +1 -0
  50. package/dist/parsing/functions/id.js +58 -0
  51. package/dist/parsing/functions/id.js.map +1 -0
  52. package/dist/parsing/functions/last.d.ts +7 -0
  53. package/dist/parsing/functions/last.d.ts.map +1 -0
  54. package/dist/parsing/functions/last.js +53 -0
  55. package/dist/parsing/functions/last.js.map +1 -0
  56. package/dist/parsing/functions/localdatetime.d.ts +21 -0
  57. package/dist/parsing/functions/localdatetime.d.ts.map +1 -0
  58. package/dist/parsing/functions/localdatetime.js +71 -0
  59. package/dist/parsing/functions/localdatetime.js.map +1 -0
  60. package/dist/parsing/functions/localtime.d.ts +20 -0
  61. package/dist/parsing/functions/localtime.d.ts.map +1 -0
  62. package/dist/parsing/functions/localtime.js +67 -0
  63. package/dist/parsing/functions/localtime.js.map +1 -0
  64. package/dist/parsing/functions/max.d.ts +14 -0
  65. package/dist/parsing/functions/max.d.ts.map +1 -0
  66. package/dist/parsing/functions/max.js +51 -0
  67. package/dist/parsing/functions/max.js.map +1 -0
  68. package/dist/parsing/functions/min.d.ts +14 -0
  69. package/dist/parsing/functions/min.d.ts.map +1 -0
  70. package/dist/parsing/functions/min.js +51 -0
  71. package/dist/parsing/functions/min.js.map +1 -0
  72. package/dist/parsing/functions/nodes.d.ts +7 -0
  73. package/dist/parsing/functions/nodes.d.ts.map +1 -0
  74. package/dist/parsing/functions/nodes.js +63 -0
  75. package/dist/parsing/functions/nodes.js.map +1 -0
  76. package/dist/parsing/functions/predicate_sum.d.ts.map +1 -1
  77. package/dist/parsing/functions/predicate_sum.js +13 -10
  78. package/dist/parsing/functions/predicate_sum.js.map +1 -1
  79. package/dist/parsing/functions/properties.d.ts +7 -0
  80. package/dist/parsing/functions/properties.d.ts.map +1 -0
  81. package/dist/parsing/functions/properties.js +74 -0
  82. package/dist/parsing/functions/properties.js.map +1 -0
  83. package/dist/parsing/functions/relationships.d.ts +7 -0
  84. package/dist/parsing/functions/relationships.d.ts.map +1 -0
  85. package/dist/parsing/functions/relationships.js +61 -0
  86. package/dist/parsing/functions/relationships.js.map +1 -0
  87. package/dist/parsing/functions/schema.d.ts +5 -2
  88. package/dist/parsing/functions/schema.d.ts.map +1 -1
  89. package/dist/parsing/functions/schema.js +7 -4
  90. package/dist/parsing/functions/schema.js.map +1 -1
  91. package/dist/parsing/functions/tail.d.ts +7 -0
  92. package/dist/parsing/functions/tail.d.ts.map +1 -0
  93. package/dist/parsing/functions/tail.js +50 -0
  94. package/dist/parsing/functions/tail.js.map +1 -0
  95. package/dist/parsing/functions/temporal_utils.d.ts +39 -0
  96. package/dist/parsing/functions/temporal_utils.d.ts.map +1 -0
  97. package/dist/parsing/functions/temporal_utils.js +168 -0
  98. package/dist/parsing/functions/temporal_utils.js.map +1 -0
  99. package/dist/parsing/functions/time.d.ts +20 -0
  100. package/dist/parsing/functions/time.d.ts.map +1 -0
  101. package/dist/parsing/functions/time.js +67 -0
  102. package/dist/parsing/functions/time.js.map +1 -0
  103. package/dist/parsing/functions/timestamp.d.ts +17 -0
  104. package/dist/parsing/functions/timestamp.d.ts.map +1 -0
  105. package/dist/parsing/functions/timestamp.js +51 -0
  106. package/dist/parsing/functions/timestamp.js.map +1 -0
  107. package/dist/parsing/functions/to_float.d.ts +7 -0
  108. package/dist/parsing/functions/to_float.d.ts.map +1 -0
  109. package/dist/parsing/functions/to_float.js +61 -0
  110. package/dist/parsing/functions/to_float.js.map +1 -0
  111. package/dist/parsing/functions/to_integer.d.ts +7 -0
  112. package/dist/parsing/functions/to_integer.d.ts.map +1 -0
  113. package/dist/parsing/functions/to_integer.js +61 -0
  114. package/dist/parsing/functions/to_integer.js.map +1 -0
  115. package/dist/parsing/functions/trim.d.ts +7 -0
  116. package/dist/parsing/functions/trim.d.ts.map +1 -0
  117. package/dist/parsing/functions/trim.js +37 -0
  118. package/dist/parsing/functions/trim.js.map +1 -0
  119. package/dist/parsing/operations/group_by.d.ts.map +1 -1
  120. package/dist/parsing/operations/group_by.js +4 -2
  121. package/dist/parsing/operations/group_by.js.map +1 -1
  122. package/dist/parsing/parser.d.ts.map +1 -1
  123. package/dist/parsing/parser.js +15 -2
  124. package/dist/parsing/parser.js.map +1 -1
  125. package/docs/flowquery.min.js +1 -1
  126. package/flowquery-py/pyproject.toml +1 -1
  127. package/flowquery-py/src/graph/database.py +44 -11
  128. package/flowquery-py/src/graph/relationship.py +11 -3
  129. package/flowquery-py/src/graph/relationship_data.py +2 -1
  130. package/flowquery-py/src/graph/relationship_match_collector.py +7 -1
  131. package/flowquery-py/src/graph/relationship_reference.py +2 -2
  132. package/flowquery-py/src/parsing/data_structures/lookup.py +2 -0
  133. package/flowquery-py/src/parsing/functions/__init__.py +42 -2
  134. package/flowquery-py/src/parsing/functions/coalesce.py +44 -0
  135. package/flowquery-py/src/parsing/functions/date_.py +63 -0
  136. package/flowquery-py/src/parsing/functions/datetime_.py +64 -0
  137. package/flowquery-py/src/parsing/functions/duration.py +159 -0
  138. package/flowquery-py/src/parsing/functions/element_id.py +50 -0
  139. package/flowquery-py/src/parsing/functions/head.py +39 -0
  140. package/flowquery-py/src/parsing/functions/id_.py +49 -0
  141. package/flowquery-py/src/parsing/functions/last.py +39 -0
  142. package/flowquery-py/src/parsing/functions/localdatetime.py +62 -0
  143. package/flowquery-py/src/parsing/functions/localtime.py +59 -0
  144. package/flowquery-py/src/parsing/functions/max_.py +49 -0
  145. package/flowquery-py/src/parsing/functions/min_.py +49 -0
  146. package/flowquery-py/src/parsing/functions/nodes.py +48 -0
  147. package/flowquery-py/src/parsing/functions/predicate_sum.py +3 -6
  148. package/flowquery-py/src/parsing/functions/properties.py +50 -0
  149. package/flowquery-py/src/parsing/functions/relationships.py +46 -0
  150. package/flowquery-py/src/parsing/functions/schema.py +9 -5
  151. package/flowquery-py/src/parsing/functions/tail.py +37 -0
  152. package/flowquery-py/src/parsing/functions/temporal_utils.py +186 -0
  153. package/flowquery-py/src/parsing/functions/time_.py +59 -0
  154. package/flowquery-py/src/parsing/functions/timestamp.py +39 -0
  155. package/flowquery-py/src/parsing/functions/to_float.py +46 -0
  156. package/flowquery-py/src/parsing/functions/to_integer.py +46 -0
  157. package/flowquery-py/src/parsing/functions/trim.py +35 -0
  158. package/flowquery-py/src/parsing/operations/group_by.py +2 -0
  159. package/flowquery-py/src/parsing/parser.py +12 -2
  160. package/flowquery-py/tests/compute/test_runner.py +1082 -4
  161. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
  162. package/package.json +1 -1
  163. package/src/graph/database.ts +42 -4
  164. package/src/graph/relationship.ts +12 -4
  165. package/src/graph/relationship_data.ts +1 -1
  166. package/src/graph/relationship_match_collector.ts +6 -2
  167. package/src/graph/relationship_reference.ts +1 -1
  168. package/src/parsing/data_structures/lookup.ts +8 -4
  169. package/src/parsing/functions/coalesce.ts +50 -0
  170. package/src/parsing/functions/date.ts +65 -0
  171. package/src/parsing/functions/datetime.ts +65 -0
  172. package/src/parsing/functions/duration.ts +143 -0
  173. package/src/parsing/functions/element_id.ts +51 -0
  174. package/src/parsing/functions/function_factory.ts +21 -0
  175. package/src/parsing/functions/head.ts +42 -0
  176. package/src/parsing/functions/id.ts +51 -0
  177. package/src/parsing/functions/last.ts +42 -0
  178. package/src/parsing/functions/localdatetime.ts +65 -0
  179. package/src/parsing/functions/localtime.ts +60 -0
  180. package/src/parsing/functions/max.ts +37 -0
  181. package/src/parsing/functions/min.ts +37 -0
  182. package/src/parsing/functions/nodes.ts +54 -0
  183. package/src/parsing/functions/predicate_sum.ts +17 -12
  184. package/src/parsing/functions/properties.ts +56 -0
  185. package/src/parsing/functions/relationships.ts +52 -0
  186. package/src/parsing/functions/schema.ts +7 -4
  187. package/src/parsing/functions/tail.ts +39 -0
  188. package/src/parsing/functions/temporal_utils.ts +180 -0
  189. package/src/parsing/functions/time.ts +60 -0
  190. package/src/parsing/functions/timestamp.ts +41 -0
  191. package/src/parsing/functions/to_float.ts +50 -0
  192. package/src/parsing/functions/to_integer.ts +50 -0
  193. package/src/parsing/functions/trim.ts +25 -0
  194. package/src/parsing/operations/group_by.ts +4 -1
  195. package/src/parsing/parser.ts +15 -2
  196. package/tests/compute/runner.test.ts +1005 -3
  197. package/tests/parsing/parser.test.ts +37 -0
@@ -0,0 +1,71 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const function_1 = __importDefault(require("./function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ const temporal_utils_1 = require("./temporal_utils");
15
+ /**
16
+ * Returns a local datetime value (date + time, no timezone offset).
17
+ * When called with no arguments, returns the current local datetime.
18
+ * When called with a string argument, parses it as an ISO 8601 datetime.
19
+ * When called with a map argument, constructs a datetime from components.
20
+ *
21
+ * Equivalent to Neo4j's localdatetime() function.
22
+ *
23
+ * @example
24
+ * ```
25
+ * RETURN localdatetime() AS now
26
+ * RETURN localdatetime('2025-06-15T12:30:00') AS dt
27
+ * ```
28
+ */
29
+ let LocalDatetime = class LocalDatetime extends function_1.default {
30
+ constructor() {
31
+ super("localdatetime");
32
+ this._expectedParameterCount = null;
33
+ }
34
+ value() {
35
+ const children = this.getChildren();
36
+ if (children.length > 1) {
37
+ throw new Error("localdatetime() accepts at most one argument");
38
+ }
39
+ const d = children.length === 1
40
+ ? (0, temporal_utils_1.parseTemporalArg)(children[0].value(), "localdatetime")
41
+ : new Date();
42
+ return (0, temporal_utils_1.buildDatetimeObject)(d, false);
43
+ }
44
+ };
45
+ LocalDatetime = __decorate([
46
+ (0, function_metadata_1.FunctionDef)({
47
+ description: "Returns a local datetime value (no timezone). With no arguments returns the current local datetime. " +
48
+ "Accepts an ISO 8601 string or a map of components.",
49
+ category: "scalar",
50
+ parameters: [
51
+ {
52
+ name: "input",
53
+ description: "Optional. An ISO 8601 datetime string or a map of components.",
54
+ type: "string",
55
+ required: false,
56
+ },
57
+ ],
58
+ output: {
59
+ description: "A datetime object with properties: year, month, day, hour, minute, second, millisecond, " +
60
+ "epochMillis, epochSeconds, dayOfWeek, dayOfYear, quarter, formatted",
61
+ type: "object",
62
+ },
63
+ examples: [
64
+ "RETURN localdatetime() AS now",
65
+ "RETURN localdatetime('2025-06-15T12:30:00') AS dt",
66
+ "WITH localdatetime() AS dt RETURN dt.hour, dt.minute",
67
+ ],
68
+ })
69
+ ], LocalDatetime);
70
+ exports.default = LocalDatetime;
71
+ //# sourceMappingURL=localdatetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localdatetime.js","sourceRoot":"","sources":["../../../src/parsing/functions/localdatetime.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAClD,qDAAyE;AAEzE;;;;;;;;;;;;;GAaG;AA0BH,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,kBAAQ;IAChC;QACI,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACxC,CAAC;IAEM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,GACH,QAAQ,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,IAAA,iCAAgB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC;YACxD,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAErB,OAAO,IAAA,oCAAmB,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACJ,CAAA;AAnBK,aAAa;IAzBlB,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,sGAAsG;YACtG,oDAAoD;QACxD,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,+DAA+D;gBAC5E,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;aAClB;SACJ;QACD,MAAM,EAAE;YACJ,WAAW,EACP,0FAA0F;gBAC1F,qEAAqE;YACzE,IAAI,EAAE,QAAQ;SACjB;QACD,QAAQ,EAAE;YACN,+BAA+B;YAC/B,mDAAmD;YACnD,sDAAsD;SACzD;KACJ,CAAC;GACI,aAAa,CAmBlB;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ import Function from "./function";
2
+ /**
3
+ * Returns a local time value (no timezone offset).
4
+ * When called with no arguments, returns the current local time.
5
+ * When called with a string argument, parses it.
6
+ *
7
+ * Equivalent to Neo4j's localtime() function.
8
+ *
9
+ * @example
10
+ * ```
11
+ * RETURN localtime() AS now
12
+ * RETURN localtime('14:30:00') AS t
13
+ * ```
14
+ */
15
+ declare class LocalTime extends Function {
16
+ constructor();
17
+ value(): any;
18
+ }
19
+ export default LocalTime;
20
+ //# sourceMappingURL=localtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localtime.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/localtime.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC;;;;;;;;;;;;GAYG;AACH,cAuBM,SAAU,SAAQ,QAAQ;;IAMrB,KAAK,IAAI,GAAG;CAWtB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,67 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const function_1 = __importDefault(require("./function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ const temporal_utils_1 = require("./temporal_utils");
15
+ /**
16
+ * Returns a local time value (no timezone offset).
17
+ * When called with no arguments, returns the current local time.
18
+ * When called with a string argument, parses it.
19
+ *
20
+ * Equivalent to Neo4j's localtime() function.
21
+ *
22
+ * @example
23
+ * ```
24
+ * RETURN localtime() AS now
25
+ * RETURN localtime('14:30:00') AS t
26
+ * ```
27
+ */
28
+ let LocalTime = class LocalTime extends function_1.default {
29
+ constructor() {
30
+ super("localtime");
31
+ this._expectedParameterCount = null;
32
+ }
33
+ value() {
34
+ const children = this.getChildren();
35
+ if (children.length > 1) {
36
+ throw new Error("localtime() accepts at most one argument");
37
+ }
38
+ const d = children.length === 1 ? (0, temporal_utils_1.parseTemporalArg)(children[0].value(), "localtime") : new Date();
39
+ return (0, temporal_utils_1.buildTimeObject)(d, false);
40
+ }
41
+ };
42
+ LocalTime = __decorate([
43
+ (0, function_metadata_1.FunctionDef)({
44
+ description: "Returns a local time value (no timezone). With no arguments returns the current local time. " +
45
+ "Accepts an ISO 8601 time string or a map of components.",
46
+ category: "scalar",
47
+ parameters: [
48
+ {
49
+ name: "input",
50
+ description: "Optional. An ISO 8601 time string (HH:MM:SS) or a map of components.",
51
+ type: "string",
52
+ required: false,
53
+ },
54
+ ],
55
+ output: {
56
+ description: "A time object with properties: hour, minute, second, millisecond, formatted",
57
+ type: "object",
58
+ },
59
+ examples: [
60
+ "RETURN localtime() AS now",
61
+ "RETURN localtime('14:30:00') AS t",
62
+ "WITH localtime() AS t RETURN t.hour, t.minute",
63
+ ],
64
+ })
65
+ ], LocalTime);
66
+ exports.default = LocalTime;
67
+ //# sourceMappingURL=localtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localtime.js","sourceRoot":"","sources":["../../../src/parsing/functions/localtime.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAClD,qDAAqE;AAErE;;;;;;;;;;;;GAYG;AAwBH,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,kBAAQ;IAC5B;QACI,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACxC,CAAC;IAEM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,GACH,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,iCAAgB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAE5F,OAAO,IAAA,gCAAe,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;CACJ,CAAA;AAjBK,SAAS;IAvBd,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,8FAA8F;YAC9F,yDAAyD;QAC7D,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,sEAAsE;gBACnF,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;aAClB;SACJ;QACD,MAAM,EAAE;YACJ,WAAW,EAAE,6EAA6E;YAC1F,IAAI,EAAE,QAAQ;SACjB;QACD,QAAQ,EAAE;YACN,2BAA2B;YAC3B,mCAAmC;YACnC,+CAA+C;SAClD;KACJ,CAAC;GACI,SAAS,CAiBd;AAED,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ import AggregateFunction from "./aggregate_function";
2
+ import ReducerElement from "./reducer_element";
3
+ declare class MaxReducerElement extends ReducerElement {
4
+ private _value;
5
+ get value(): any;
6
+ set value(value: any);
7
+ }
8
+ declare class Max extends AggregateFunction {
9
+ constructor();
10
+ reduce(element: MaxReducerElement): void;
11
+ element(): MaxReducerElement;
12
+ }
13
+ export default Max;
14
+ //# sourceMappingURL=max.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/max.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAE/C,cAAM,iBAAkB,SAAQ,cAAc;IAC1C,OAAO,CAAC,MAAM,CAAa;IAC3B,IAAW,KAAK,IAAI,GAAG,CAEtB;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAI1B;CACJ;AAED,cAOM,GAAI,SAAQ,iBAAiB;;IAKxB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAGxC,OAAO,IAAI,iBAAiB;CAGtC;AAED,eAAe,GAAG,CAAC"}
@@ -0,0 +1,51 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const aggregate_function_1 = __importDefault(require("./aggregate_function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ const reducer_element_1 = __importDefault(require("./reducer_element"));
15
+ class MaxReducerElement extends reducer_element_1.default {
16
+ constructor() {
17
+ super(...arguments);
18
+ this._value = null;
19
+ }
20
+ get value() {
21
+ return this._value;
22
+ }
23
+ set value(value) {
24
+ if (this._value === null || value > this._value) {
25
+ this._value = value;
26
+ }
27
+ }
28
+ }
29
+ let Max = class Max extends aggregate_function_1.default {
30
+ constructor() {
31
+ super("max");
32
+ this._expectedParameterCount = 1;
33
+ }
34
+ reduce(element) {
35
+ element.value = this.firstChild().value();
36
+ }
37
+ element() {
38
+ return new MaxReducerElement();
39
+ }
40
+ };
41
+ Max = __decorate([
42
+ (0, function_metadata_1.FunctionDef)({
43
+ description: "Returns the maximum value across grouped rows",
44
+ category: "aggregate",
45
+ parameters: [{ name: "value", description: "Value to compare", type: "number" }],
46
+ output: { description: "Maximum value", type: "number", example: 10 },
47
+ examples: ["WITH [3, 1, 2] AS nums UNWIND nums AS n RETURN max(n)"],
48
+ })
49
+ ], Max);
50
+ exports.default = Max;
51
+ //# sourceMappingURL=max.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max.js","sourceRoot":"","sources":["../../../src/parsing/functions/max.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8EAAqD;AACrD,2DAAkD;AAClD,wEAA+C;AAE/C,MAAM,iBAAkB,SAAQ,yBAAc;IAA9C;;QACY,WAAM,GAAQ,IAAI,CAAC;IAS/B,CAAC;IARG,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AASD,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;IAPR,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAChF,MAAM,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACrE,QAAQ,EAAE,CAAC,uDAAuD,CAAC;KACtE,CAAC;GACI,GAAG,CAWR;AAED,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,14 @@
1
+ import AggregateFunction from "./aggregate_function";
2
+ import ReducerElement from "./reducer_element";
3
+ declare class MinReducerElement extends ReducerElement {
4
+ private _value;
5
+ get value(): any;
6
+ set value(value: any);
7
+ }
8
+ declare class Min extends AggregateFunction {
9
+ constructor();
10
+ reduce(element: MinReducerElement): void;
11
+ element(): MinReducerElement;
12
+ }
13
+ export default Min;
14
+ //# sourceMappingURL=min.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/min.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAE/C,cAAM,iBAAkB,SAAQ,cAAc;IAC1C,OAAO,CAAC,MAAM,CAAa;IAC3B,IAAW,KAAK,IAAI,GAAG,CAEtB;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAI1B;CACJ;AAED,cAOM,GAAI,SAAQ,iBAAiB;;IAKxB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAGxC,OAAO,IAAI,iBAAiB;CAGtC;AAED,eAAe,GAAG,CAAC"}
@@ -0,0 +1,51 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const aggregate_function_1 = __importDefault(require("./aggregate_function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ const reducer_element_1 = __importDefault(require("./reducer_element"));
15
+ class MinReducerElement extends reducer_element_1.default {
16
+ constructor() {
17
+ super(...arguments);
18
+ this._value = null;
19
+ }
20
+ get value() {
21
+ return this._value;
22
+ }
23
+ set value(value) {
24
+ if (this._value === null || value < this._value) {
25
+ this._value = value;
26
+ }
27
+ }
28
+ }
29
+ let Min = class Min extends aggregate_function_1.default {
30
+ constructor() {
31
+ super("min");
32
+ this._expectedParameterCount = 1;
33
+ }
34
+ reduce(element) {
35
+ element.value = this.firstChild().value();
36
+ }
37
+ element() {
38
+ return new MinReducerElement();
39
+ }
40
+ };
41
+ Min = __decorate([
42
+ (0, function_metadata_1.FunctionDef)({
43
+ description: "Returns the minimum value across grouped rows",
44
+ category: "aggregate",
45
+ parameters: [{ name: "value", description: "Value to compare", type: "number" }],
46
+ output: { description: "Minimum value", type: "number", example: 1 },
47
+ examples: ["WITH [3, 1, 2] AS nums UNWIND nums AS n RETURN min(n)"],
48
+ })
49
+ ], Min);
50
+ exports.default = Min;
51
+ //# sourceMappingURL=min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min.js","sourceRoot":"","sources":["../../../src/parsing/functions/min.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8EAAqD;AACrD,2DAAkD;AAClD,wEAA+C;AAE/C,MAAM,iBAAkB,SAAQ,yBAAc;IAA9C;;QACY,WAAM,GAAQ,IAAI,CAAC;IAS/B,CAAC;IARG,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AASD,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;IAPR,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAChF,MAAM,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACpE,QAAQ,EAAE,CAAC,uDAAuD,CAAC;KACtE,CAAC;GACI,GAAG,CAWR;AAED,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,7 @@
1
+ import Function from "./function";
2
+ declare class Nodes extends Function {
3
+ constructor();
4
+ value(): any;
5
+ }
6
+ export default Nodes;
7
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAiBM,KAAM,SAAQ,QAAQ;;IAMjB,KAAK,IAAI,GAAG;CAyBtB;AAED,eAAe,KAAK,CAAC"}
@@ -0,0 +1,63 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const function_1 = __importDefault(require("./function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ let Nodes = class Nodes extends function_1.default {
15
+ constructor() {
16
+ super("nodes");
17
+ this._expectedParameterCount = 1;
18
+ }
19
+ value() {
20
+ const path = this.getChildren()[0].value();
21
+ if (path === null || path === undefined) {
22
+ return [];
23
+ }
24
+ if (!Array.isArray(path)) {
25
+ throw new Error("nodes() expects a path (array)");
26
+ }
27
+ // A path is an array of alternating node and relationship objects:
28
+ // [node, rel, node, rel, node, ...]
29
+ // Nodes are plain NodeRecords (have 'id' but not 'type'/'startNode'/'endNode')
30
+ // Relationships are RelationshipMatchRecords (have 'type', 'startNode', 'endNode', 'properties')
31
+ return path.filter((element) => {
32
+ if (element === null || element === undefined || typeof element !== "object") {
33
+ return false;
34
+ }
35
+ // A RelationshipMatchRecord has type, startNode, endNode, properties
36
+ return !("type" in element &&
37
+ "startNode" in element &&
38
+ "endNode" in element &&
39
+ "properties" in element);
40
+ });
41
+ }
42
+ };
43
+ Nodes = __decorate([
44
+ (0, function_metadata_1.FunctionDef)({
45
+ description: "Returns all nodes in a path as an array",
46
+ category: "scalar",
47
+ parameters: [
48
+ {
49
+ name: "path",
50
+ description: "A path value returned from a graph pattern match",
51
+ type: "array",
52
+ },
53
+ ],
54
+ output: {
55
+ description: "Array of node records",
56
+ type: "array",
57
+ example: "[{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]",
58
+ },
59
+ examples: ["MATCH p=(:Person)-[:KNOWS]-(:Person) RETURN nodes(p)"],
60
+ })
61
+ ], Nodes);
62
+ exports.default = Nodes;
63
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/parsing/functions/nodes.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAmBlD,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QACD,mEAAmE;QACnE,oCAAoC;QACpC,+EAA+E;QAC/E,iGAAiG;QACjG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE;YAChC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,qEAAqE;YACrE,OAAO,CAAC,CACJ,MAAM,IAAI,OAAO;gBACjB,WAAW,IAAI,OAAO;gBACtB,SAAS,IAAI,OAAO;gBACpB,YAAY,IAAI,OAAO,CAC1B,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA/BK,KAAK;IAjBV,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,kDAAkD;gBAC/D,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,MAAM,EAAE;YACJ,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,oDAAoD;SAChE;QACD,QAAQ,EAAE,CAAC,sDAAsD,CAAC;KACrE,CAAC;GACI,KAAK,CA+BV;AAED,kBAAe,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"predicate_sum.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_sum.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAGrD,cAYM,YAAa,SAAQ,iBAAiB;;IAKjC,KAAK,IAAI,GAAG;CAmBtB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"predicate_sum.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_sum.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,cAqBM,YAAa,SAAQ,iBAAiB;;IAKjC,KAAK,IAAI,GAAG;CAetB;AAED,eAAe,YAAY,CAAC"}
@@ -9,8 +9,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- const predicate_function_1 = __importDefault(require("./predicate_function"));
13
12
  const function_metadata_1 = require("./function_metadata");
13
+ const predicate_function_1 = __importDefault(require("./predicate_function"));
14
14
  let PredicateSum = class PredicateSum extends predicate_function_1.default {
15
15
  constructor() {
16
16
  super("sum");
@@ -21,16 +21,11 @@ let PredicateSum = class PredicateSum extends predicate_function_1.default {
21
21
  if (array === null || !Array.isArray(array)) {
22
22
  throw new Error("Invalid array for sum function");
23
23
  }
24
- let _sum = null;
24
+ let _sum = 0;
25
25
  for (let i = 0; i < array.length; i++) {
26
26
  this._valueHolder.holder = array[i];
27
27
  if (this.where === null || this.where.value()) {
28
- if (_sum === null) {
29
- _sum = this._return.value();
30
- }
31
- else {
32
- _sum += this._return.value();
33
- }
28
+ _sum += this._return.value();
34
29
  }
35
30
  }
36
31
  return _sum;
@@ -44,10 +39,18 @@ PredicateSum = __decorate([
44
39
  { name: "variable", description: "Variable name to bind each element", type: "string" },
45
40
  { name: "array", description: "Array to iterate over", type: "array" },
46
41
  { name: "expression", description: "Expression to sum for each element", type: "any" },
47
- { name: "where", description: "Optional filter condition", type: "boolean", required: false }
42
+ {
43
+ name: "where",
44
+ description: "Optional filter condition",
45
+ type: "boolean",
46
+ required: false,
47
+ },
48
48
  ],
49
49
  output: { description: "Sum of the evaluated expressions", type: "number", example: 6 },
50
- examples: ["WITH [1, 2, 3] AS nums RETURN sum(n IN nums | n)", "WITH [1, 2, 3, 4] AS nums RETURN sum(n IN nums WHERE n > 1 | n * 2)"]
50
+ examples: [
51
+ "WITH [1, 2, 3] AS nums RETURN sum(n IN nums | n)",
52
+ "WITH [1, 2, 3, 4] AS nums RETURN sum(n IN nums WHERE n > 1 | n * 2)",
53
+ ],
51
54
  })
52
55
  ], PredicateSum);
53
56
  exports.default = PredicateSum;
@@ -1 +1 @@
1
- {"version":3,"file":"predicate_sum.js","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_sum.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8EAAqD;AACrD,2DAAkD;AAclD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAiB;IACxC;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,GAAe,IAAI,CAAC;QAC5B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AAxBK,YAAY;IAZjB,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,yJAAyJ;QACtK,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;YACtE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;SAChG;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACvF,QAAQ,EAAE,CAAC,kDAAkD,EAAE,qEAAqE,CAAC;KACxI,CAAC;GACI,YAAY,CAwBjB;AAED,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"predicate_sum.js","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_sum.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAAkD;AAClD,8EAAqD;AAuBrD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAiB;IACxC;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,GAAW,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5C,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AApBK,YAAY;IArBjB,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,yJAAyJ;QAC7J,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;YACtE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtF;gBACI,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;aAClB;SACJ;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACvF,QAAQ,EAAE;YACN,kDAAkD;YAClD,qEAAqE;SACxE;KACJ,CAAC;GACI,YAAY,CAoBjB;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import Function from "./function";
2
+ declare class Properties extends Function {
3
+ constructor();
4
+ value(): any;
5
+ }
6
+ export default Properties;
7
+ //# sourceMappingURL=properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/properties.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAqBM,UAAW,SAAQ,QAAQ;;IAMtB,KAAK,IAAI,GAAG;CAuBtB;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,74 @@
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
+ };
8
+ var __rest = (this && this.__rest) || function (s, e) {
9
+ var t = {};
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
11
+ t[p] = s[p];
12
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
13
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
14
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
15
+ t[p[i]] = s[p[i]];
16
+ }
17
+ return t;
18
+ };
19
+ var __importDefault = (this && this.__importDefault) || function (mod) {
20
+ return (mod && mod.__esModule) ? mod : { "default": mod };
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ const function_1 = __importDefault(require("./function"));
24
+ const function_metadata_1 = require("./function_metadata");
25
+ let Properties = class Properties extends function_1.default {
26
+ constructor() {
27
+ super("properties");
28
+ this._expectedParameterCount = 1;
29
+ }
30
+ value() {
31
+ const obj = this.getChildren()[0].value();
32
+ if (obj === null || obj === undefined) {
33
+ return null;
34
+ }
35
+ if (typeof obj !== "object" || Array.isArray(obj)) {
36
+ throw new Error("properties() expects a node, relationship, or map");
37
+ }
38
+ // If it's a RelationshipMatchRecord (has type, startNode, endNode, properties)
39
+ if ("type" in obj && "startNode" in obj && "endNode" in obj && "properties" in obj) {
40
+ return obj.properties;
41
+ }
42
+ // If it's a node record (has id field), exclude id
43
+ if ("id" in obj) {
44
+ const { id } = obj, props = __rest(obj, ["id"]);
45
+ return props;
46
+ }
47
+ // Otherwise, treat as a plain map and return a copy
48
+ return Object.assign({}, obj);
49
+ }
50
+ };
51
+ Properties = __decorate([
52
+ (0, function_metadata_1.FunctionDef)({
53
+ description: "Returns a map containing all the properties of a node, relationship, or map. For nodes and relationships, internal identifiers are excluded.",
54
+ category: "scalar",
55
+ parameters: [
56
+ {
57
+ name: "entity",
58
+ description: "A node, relationship, or map to extract properties from",
59
+ type: "object",
60
+ },
61
+ ],
62
+ output: {
63
+ description: "Map of properties",
64
+ type: "object",
65
+ example: "{ name: 'Alice', age: 30 }",
66
+ },
67
+ examples: [
68
+ "MATCH (n:Person) RETURN properties(n)",
69
+ "WITH { name: 'Alice', age: 30 } AS obj RETURN properties(obj)",
70
+ ],
71
+ })
72
+ ], Properties);
73
+ exports.default = Properties;
74
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/parsing/functions/properties.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAuBlD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,kBAAQ;IAC7B;QACI,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QAED,+EAA+E;QAC/E,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;YACjF,OAAO,GAAG,CAAC,UAAU,CAAC;QAC1B,CAAC;QAED,mDAAmD;QACnD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,EAAE,EAAE,KAAe,GAAG,EAAb,KAAK,UAAK,GAAG,EAAtB,MAAgB,CAAM,CAAC;YAC7B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,oDAAoD;QACpD,yBAAY,GAAG,EAAG;IACtB,CAAC;CACJ,CAAA;AA7BK,UAAU;IArBf,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,8IAA8I;QAClJ,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;gBACtE,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,MAAM,EAAE;YACJ,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,4BAA4B;SACxC;QACD,QAAQ,EAAE;YACN,uCAAuC;YACvC,+DAA+D;SAClE;KACJ,CAAC;GACI,UAAU,CA6Bf;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ import Function from "./function";
2
+ declare class Relationships extends Function {
3
+ constructor();
4
+ value(): any;
5
+ }
6
+ export default Relationships;
7
+ //# sourceMappingURL=relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAiBM,aAAc,SAAQ,QAAQ;;IAMzB,KAAK,IAAI,GAAG;CAuBtB;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,61 @@
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
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const function_1 = __importDefault(require("./function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ let Relationships = class Relationships extends function_1.default {
15
+ constructor() {
16
+ super("relationships");
17
+ this._expectedParameterCount = 1;
18
+ }
19
+ value() {
20
+ const path = this.getChildren()[0].value();
21
+ if (path === null || path === undefined) {
22
+ return [];
23
+ }
24
+ if (!Array.isArray(path)) {
25
+ throw new Error("relationships() expects a path (array)");
26
+ }
27
+ // A path is an array of alternating node and relationship objects:
28
+ // [node, rel, node, rel, node, ...]
29
+ // Relationships are RelationshipMatchRecords (have 'type', 'startNode', 'endNode', 'properties')
30
+ return path.filter((element) => {
31
+ if (element === null || element === undefined || typeof element !== "object") {
32
+ return false;
33
+ }
34
+ return ("type" in element &&
35
+ "startNode" in element &&
36
+ "endNode" in element &&
37
+ "properties" in element);
38
+ });
39
+ }
40
+ };
41
+ Relationships = __decorate([
42
+ (0, function_metadata_1.FunctionDef)({
43
+ description: "Returns all relationships in a path as an array",
44
+ category: "scalar",
45
+ parameters: [
46
+ {
47
+ name: "path",
48
+ description: "A path value returned from a graph pattern match",
49
+ type: "array",
50
+ },
51
+ ],
52
+ output: {
53
+ description: "Array of relationship records",
54
+ type: "array",
55
+ example: "[{ type: 'KNOWS', properties: { since: '2020' } }]",
56
+ },
57
+ examples: ["MATCH p=(:Person)-[:KNOWS]-(:Person) RETURN relationships(p)"],
58
+ })
59
+ ], Relationships);
60
+ exports.default = Relationships;
61
+ //# sourceMappingURL=relationships.js.map