flowquery 1.0.35 → 1.0.37
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/dist/flowquery.min.js +1 -1
- package/dist/parsing/data_structures/lookup.d.ts.map +1 -1
- package/dist/parsing/data_structures/lookup.js +5 -1
- package/dist/parsing/data_structures/lookup.js.map +1 -1
- package/dist/parsing/functions/coalesce.d.ts +16 -0
- package/dist/parsing/functions/coalesce.d.ts.map +1 -0
- package/dist/parsing/functions/coalesce.js +60 -0
- package/dist/parsing/functions/coalesce.js.map +1 -0
- package/dist/parsing/functions/date.d.ts +20 -0
- package/dist/parsing/functions/date.d.ts.map +1 -0
- package/dist/parsing/functions/date.js +69 -0
- package/dist/parsing/functions/date.js.map +1 -0
- package/dist/parsing/functions/datetime.d.ts +20 -0
- package/dist/parsing/functions/datetime.d.ts.map +1 -0
- package/dist/parsing/functions/datetime.js +69 -0
- package/dist/parsing/functions/datetime.js.map +1 -0
- package/dist/parsing/functions/duration.d.ts +7 -0
- package/dist/parsing/functions/duration.d.ts.map +1 -0
- package/dist/parsing/functions/duration.js +145 -0
- package/dist/parsing/functions/duration.js.map +1 -0
- package/dist/parsing/functions/element_id.d.ts +7 -0
- package/dist/parsing/functions/element_id.d.ts.map +1 -0
- package/dist/parsing/functions/element_id.js +58 -0
- package/dist/parsing/functions/element_id.js.map +1 -0
- package/dist/parsing/functions/function_factory.d.ts +20 -0
- package/dist/parsing/functions/function_factory.d.ts.map +1 -1
- package/dist/parsing/functions/function_factory.js +20 -0
- package/dist/parsing/functions/function_factory.js.map +1 -1
- package/dist/parsing/functions/head.d.ts +7 -0
- package/dist/parsing/functions/head.d.ts.map +1 -0
- package/dist/parsing/functions/head.js +53 -0
- package/dist/parsing/functions/head.js.map +1 -0
- package/dist/parsing/functions/id.d.ts +7 -0
- package/dist/parsing/functions/id.d.ts.map +1 -0
- package/dist/parsing/functions/id.js +58 -0
- package/dist/parsing/functions/id.js.map +1 -0
- package/dist/parsing/functions/last.d.ts +7 -0
- package/dist/parsing/functions/last.d.ts.map +1 -0
- package/dist/parsing/functions/last.js +53 -0
- package/dist/parsing/functions/last.js.map +1 -0
- package/dist/parsing/functions/localdatetime.d.ts +19 -0
- package/dist/parsing/functions/localdatetime.d.ts.map +1 -0
- package/dist/parsing/functions/localdatetime.js +69 -0
- package/dist/parsing/functions/localdatetime.js.map +1 -0
- package/dist/parsing/functions/localtime.d.ts +18 -0
- package/dist/parsing/functions/localtime.d.ts.map +1 -0
- package/dist/parsing/functions/localtime.js +65 -0
- package/dist/parsing/functions/localtime.js.map +1 -0
- package/dist/parsing/functions/max.d.ts +14 -0
- package/dist/parsing/functions/max.d.ts.map +1 -0
- package/dist/parsing/functions/max.js +51 -0
- package/dist/parsing/functions/max.js.map +1 -0
- package/dist/parsing/functions/min.d.ts +14 -0
- package/dist/parsing/functions/min.d.ts.map +1 -0
- package/dist/parsing/functions/min.js +51 -0
- package/dist/parsing/functions/min.js.map +1 -0
- package/dist/parsing/functions/nodes.d.ts +7 -0
- package/dist/parsing/functions/nodes.d.ts.map +1 -0
- package/dist/parsing/functions/nodes.js +63 -0
- package/dist/parsing/functions/nodes.js.map +1 -0
- package/dist/parsing/functions/properties.d.ts +7 -0
- package/dist/parsing/functions/properties.d.ts.map +1 -0
- package/dist/parsing/functions/properties.js +74 -0
- package/dist/parsing/functions/properties.js.map +1 -0
- package/dist/parsing/functions/relationships.d.ts +7 -0
- package/dist/parsing/functions/relationships.d.ts.map +1 -0
- package/dist/parsing/functions/relationships.js +61 -0
- package/dist/parsing/functions/relationships.js.map +1 -0
- package/dist/parsing/functions/tail.d.ts +7 -0
- package/dist/parsing/functions/tail.d.ts.map +1 -0
- package/dist/parsing/functions/tail.js +50 -0
- package/dist/parsing/functions/tail.js.map +1 -0
- package/dist/parsing/functions/temporal_utils.d.ts +39 -0
- package/dist/parsing/functions/temporal_utils.d.ts.map +1 -0
- package/dist/parsing/functions/temporal_utils.js +168 -0
- package/dist/parsing/functions/temporal_utils.js.map +1 -0
- package/dist/parsing/functions/time.d.ts +18 -0
- package/dist/parsing/functions/time.d.ts.map +1 -0
- package/dist/parsing/functions/time.js +65 -0
- package/dist/parsing/functions/time.js.map +1 -0
- package/dist/parsing/functions/timestamp.d.ts +15 -0
- package/dist/parsing/functions/timestamp.d.ts.map +1 -0
- package/dist/parsing/functions/timestamp.js +48 -0
- package/dist/parsing/functions/timestamp.js.map +1 -0
- package/dist/parsing/functions/to_float.d.ts +7 -0
- package/dist/parsing/functions/to_float.d.ts.map +1 -0
- package/dist/parsing/functions/to_float.js +61 -0
- package/dist/parsing/functions/to_float.js.map +1 -0
- package/dist/parsing/functions/to_integer.d.ts +7 -0
- package/dist/parsing/functions/to_integer.d.ts.map +1 -0
- package/dist/parsing/functions/to_integer.js +61 -0
- package/dist/parsing/functions/to_integer.js.map +1 -0
- package/docs/flowquery.min.js +1 -1
- package/flowquery-py/pyproject.toml +1 -1
- package/flowquery-py/src/parsing/data_structures/lookup.py +2 -0
- package/flowquery-py/src/parsing/functions/__init__.py +40 -2
- package/flowquery-py/src/parsing/functions/coalesce.py +43 -0
- package/flowquery-py/src/parsing/functions/date_.py +61 -0
- package/flowquery-py/src/parsing/functions/datetime_.py +62 -0
- package/flowquery-py/src/parsing/functions/duration.py +159 -0
- package/flowquery-py/src/parsing/functions/element_id.py +50 -0
- package/flowquery-py/src/parsing/functions/head.py +39 -0
- package/flowquery-py/src/parsing/functions/id_.py +49 -0
- package/flowquery-py/src/parsing/functions/last.py +39 -0
- package/flowquery-py/src/parsing/functions/localdatetime.py +60 -0
- package/flowquery-py/src/parsing/functions/localtime.py +57 -0
- package/flowquery-py/src/parsing/functions/max_.py +49 -0
- package/flowquery-py/src/parsing/functions/min_.py +49 -0
- package/flowquery-py/src/parsing/functions/nodes.py +48 -0
- package/flowquery-py/src/parsing/functions/properties.py +50 -0
- package/flowquery-py/src/parsing/functions/relationships.py +46 -0
- package/flowquery-py/src/parsing/functions/tail.py +37 -0
- package/flowquery-py/src/parsing/functions/temporal_utils.py +186 -0
- package/flowquery-py/src/parsing/functions/time_.py +57 -0
- package/flowquery-py/src/parsing/functions/timestamp.py +37 -0
- package/flowquery-py/src/parsing/functions/to_float.py +46 -0
- package/flowquery-py/src/parsing/functions/to_integer.py +46 -0
- package/flowquery-py/tests/compute/test_runner.py +834 -1
- package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
- package/package.json +1 -1
- package/src/parsing/data_structures/lookup.ts +8 -4
- package/src/parsing/functions/coalesce.ts +49 -0
- package/src/parsing/functions/date.ts +63 -0
- package/src/parsing/functions/datetime.ts +63 -0
- package/src/parsing/functions/duration.ts +143 -0
- package/src/parsing/functions/element_id.ts +51 -0
- package/src/parsing/functions/function_factory.ts +20 -0
- package/src/parsing/functions/head.ts +42 -0
- package/src/parsing/functions/id.ts +51 -0
- package/src/parsing/functions/last.ts +42 -0
- package/src/parsing/functions/localdatetime.ts +63 -0
- package/src/parsing/functions/localtime.ts +58 -0
- package/src/parsing/functions/max.ts +37 -0
- package/src/parsing/functions/min.ts +37 -0
- package/src/parsing/functions/nodes.ts +54 -0
- package/src/parsing/functions/properties.ts +56 -0
- package/src/parsing/functions/relationships.ts +52 -0
- package/src/parsing/functions/tail.ts +39 -0
- package/src/parsing/functions/temporal_utils.ts +180 -0
- package/src/parsing/functions/time.ts +58 -0
- package/src/parsing/functions/timestamp.ts +37 -0
- package/src/parsing/functions/to_float.ts +50 -0
- package/src/parsing/functions/to_integer.ts +50 -0
- package/tests/compute/runner.test.ts +726 -0
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../../src/parsing/functions/relationships.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAmBlD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,kBAAQ;IAChC;QACI,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,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,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,mEAAmE;QACnE,oCAAoC;QACpC,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,OAAO,CACH,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;AA7BK,aAAa;IAjBlB,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,iDAAiD;QAC9D,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,+BAA+B;YAC5C,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,oDAAoD;SAChE;QACD,QAAQ,EAAE,CAAC,8DAA8D,CAAC;KAC7E,CAAC;GACI,aAAa,CA6BlB;AAED,kBAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/tail.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAiBM,IAAK,SAAQ,QAAQ;;IAMhB,KAAK,IAAI,GAAG;CAUtB;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 Tail = class Tail extends function_1.default {
|
|
15
|
+
constructor() {
|
|
16
|
+
super("tail");
|
|
17
|
+
this._expectedParameterCount = 1;
|
|
18
|
+
}
|
|
19
|
+
value() {
|
|
20
|
+
const val = this.getChildren()[0].value();
|
|
21
|
+
if (val === null || val === undefined) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (!Array.isArray(val)) {
|
|
25
|
+
throw new Error("tail() expects a list");
|
|
26
|
+
}
|
|
27
|
+
return val.slice(1);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
Tail = __decorate([
|
|
31
|
+
(0, function_metadata_1.FunctionDef)({
|
|
32
|
+
description: "Returns all elements of a list except the first",
|
|
33
|
+
category: "scalar",
|
|
34
|
+
parameters: [
|
|
35
|
+
{
|
|
36
|
+
name: "list",
|
|
37
|
+
description: "The list to get all but the first element from",
|
|
38
|
+
type: "array",
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
output: {
|
|
42
|
+
description: "All elements except the first",
|
|
43
|
+
type: "array",
|
|
44
|
+
example: "[2, 3]",
|
|
45
|
+
},
|
|
46
|
+
examples: ["RETURN tail([1, 2, 3])", "WITH ['a', 'b', 'c'] AS items RETURN tail(items)"],
|
|
47
|
+
})
|
|
48
|
+
], Tail);
|
|
49
|
+
exports.default = Tail;
|
|
50
|
+
//# sourceMappingURL=tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../../src/parsing/functions/tail.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAmBlD,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,kBAAQ;IACvB;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,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,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;CACJ,CAAA;AAhBK,IAAI;IAjBT,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,gDAAgD;gBAC7D,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,MAAM,EAAE;YACJ,WAAW,EAAE,+BAA+B;YAC5C,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ;SACpB;QACD,QAAQ,EAAE,CAAC,wBAAwB,EAAE,kDAAkD,CAAC;KAC3F,CAAC;GACI,IAAI,CAgBT;AAED,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility functions for temporal (date/time) operations.
|
|
3
|
+
*
|
|
4
|
+
* These helpers are used by the datetime, date, time, localdatetime,
|
|
5
|
+
* localtime, and timestamp functions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parses a temporal argument (string or map) into a Date object.
|
|
9
|
+
*
|
|
10
|
+
* @param arg - The argument to parse (string or object with year/month/day/hour/minute/second/millisecond)
|
|
11
|
+
* @param fnName - The calling function name for error messages
|
|
12
|
+
* @returns A Date object
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseTemporalArg(arg: any, fnName: string): Date;
|
|
15
|
+
/**
|
|
16
|
+
* Builds a datetime result object with full temporal properties.
|
|
17
|
+
*
|
|
18
|
+
* @param d - The Date object
|
|
19
|
+
* @param utc - If true, use UTC values; if false, use local values
|
|
20
|
+
* @returns An object with year, month, day, hour, minute, second, millisecond,
|
|
21
|
+
* epochMillis, epochSeconds, dayOfWeek, dayOfYear, quarter, formatted
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildDatetimeObject(d: Date, utc: boolean): Record<string, any>;
|
|
24
|
+
/**
|
|
25
|
+
* Builds a date result object (no time component).
|
|
26
|
+
*
|
|
27
|
+
* @param d - The Date object
|
|
28
|
+
* @returns An object with year, month, day, epochMillis, dayOfWeek, dayOfYear, quarter, formatted
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildDateObject(d: Date): Record<string, any>;
|
|
31
|
+
/**
|
|
32
|
+
* Builds a time result object (no date component).
|
|
33
|
+
*
|
|
34
|
+
* @param d - The Date object
|
|
35
|
+
* @param utc - If true, use UTC values; if false, use local values
|
|
36
|
+
* @returns An object with hour, minute, second, millisecond, formatted
|
|
37
|
+
*/
|
|
38
|
+
export declare function buildTimeObject(d: Date, utc: boolean): Record<string, any>;
|
|
39
|
+
//# sourceMappingURL=temporal_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal_utils.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/temporal_utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+CH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA6B/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA8B9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkB5D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgB1E"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared utility functions for temporal (date/time) operations.
|
|
4
|
+
*
|
|
5
|
+
* These helpers are used by the datetime, date, time, localdatetime,
|
|
6
|
+
* localtime, and timestamp functions.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseTemporalArg = parseTemporalArg;
|
|
10
|
+
exports.buildDatetimeObject = buildDatetimeObject;
|
|
11
|
+
exports.buildDateObject = buildDateObject;
|
|
12
|
+
exports.buildTimeObject = buildTimeObject;
|
|
13
|
+
/**
|
|
14
|
+
* Computes the ISO day of the week (1 = Monday, 7 = Sunday).
|
|
15
|
+
*/
|
|
16
|
+
function isoDayOfWeek(d) {
|
|
17
|
+
const jsDay = d.getDay(); // 0 = Sunday, 6 = Saturday
|
|
18
|
+
return jsDay === 0 ? 7 : jsDay;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Computes the day of the year (1-based).
|
|
22
|
+
*/
|
|
23
|
+
function dayOfYear(d) {
|
|
24
|
+
const start = new Date(d.getFullYear(), 0, 0);
|
|
25
|
+
const diff = d.getTime() - start.getTime();
|
|
26
|
+
const oneDay = 1000 * 60 * 60 * 24;
|
|
27
|
+
return Math.floor(diff / oneDay);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Computes the quarter (1-4) from a month (0-11).
|
|
31
|
+
*/
|
|
32
|
+
function quarter(month) {
|
|
33
|
+
return Math.floor(month / 3) + 1;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Pads a number to a given width with leading zeros.
|
|
37
|
+
*/
|
|
38
|
+
function pad(n, width = 2) {
|
|
39
|
+
return String(n).padStart(width, "0");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Formats a timezone offset in ±HH:MM format.
|
|
43
|
+
*/
|
|
44
|
+
function formatTimezoneOffset(d) {
|
|
45
|
+
const offset = -d.getTimezoneOffset();
|
|
46
|
+
if (offset === 0)
|
|
47
|
+
return "Z";
|
|
48
|
+
const sign = offset > 0 ? "+" : "-";
|
|
49
|
+
const absOffset = Math.abs(offset);
|
|
50
|
+
const hours = Math.floor(absOffset / 60);
|
|
51
|
+
const minutes = absOffset % 60;
|
|
52
|
+
return `${sign}${pad(hours)}:${pad(minutes)}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parses a temporal argument (string or map) into a Date object.
|
|
56
|
+
*
|
|
57
|
+
* @param arg - The argument to parse (string or object with year/month/day/hour/minute/second/millisecond)
|
|
58
|
+
* @param fnName - The calling function name for error messages
|
|
59
|
+
* @returns A Date object
|
|
60
|
+
*/
|
|
61
|
+
function parseTemporalArg(arg, fnName) {
|
|
62
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
63
|
+
if (typeof arg === "string") {
|
|
64
|
+
const d = new Date(arg);
|
|
65
|
+
if (isNaN(d.getTime())) {
|
|
66
|
+
throw new Error(`${fnName}(): Invalid temporal string: '${arg}'`);
|
|
67
|
+
}
|
|
68
|
+
return d;
|
|
69
|
+
}
|
|
70
|
+
if (typeof arg === "number") {
|
|
71
|
+
// Treat as epoch milliseconds
|
|
72
|
+
return new Date(arg);
|
|
73
|
+
}
|
|
74
|
+
if (typeof arg === "object" && arg !== null && !Array.isArray(arg)) {
|
|
75
|
+
// Map-style construction: {year, month, day, hour, minute, second, millisecond}
|
|
76
|
+
const year = (_a = arg.year) !== null && _a !== void 0 ? _a : new Date().getFullYear();
|
|
77
|
+
const month = ((_b = arg.month) !== null && _b !== void 0 ? _b : 1) - 1; // JS months are 0-based
|
|
78
|
+
const day = (_c = arg.day) !== null && _c !== void 0 ? _c : 1;
|
|
79
|
+
const hour = (_d = arg.hour) !== null && _d !== void 0 ? _d : 0;
|
|
80
|
+
const minute = (_e = arg.minute) !== null && _e !== void 0 ? _e : 0;
|
|
81
|
+
const second = (_f = arg.second) !== null && _f !== void 0 ? _f : 0;
|
|
82
|
+
const millisecond = (_g = arg.millisecond) !== null && _g !== void 0 ? _g : 0;
|
|
83
|
+
return new Date(year, month, day, hour, minute, second, millisecond);
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`${fnName}(): Expected a string, number (epoch millis), or map argument, got ${typeof arg}`);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Builds a datetime result object with full temporal properties.
|
|
89
|
+
*
|
|
90
|
+
* @param d - The Date object
|
|
91
|
+
* @param utc - If true, use UTC values; if false, use local values
|
|
92
|
+
* @returns An object with year, month, day, hour, minute, second, millisecond,
|
|
93
|
+
* epochMillis, epochSeconds, dayOfWeek, dayOfYear, quarter, formatted
|
|
94
|
+
*/
|
|
95
|
+
function buildDatetimeObject(d, utc) {
|
|
96
|
+
const year = utc ? d.getUTCFullYear() : d.getFullYear();
|
|
97
|
+
const month = utc ? d.getUTCMonth() + 1 : d.getMonth() + 1;
|
|
98
|
+
const day = utc ? d.getUTCDate() : d.getDate();
|
|
99
|
+
const hour = utc ? d.getUTCHours() : d.getHours();
|
|
100
|
+
const minute = utc ? d.getUTCMinutes() : d.getMinutes();
|
|
101
|
+
const second = utc ? d.getUTCSeconds() : d.getSeconds();
|
|
102
|
+
const millisecond = utc ? d.getUTCMilliseconds() : d.getMilliseconds();
|
|
103
|
+
const datePart = new Date(year, month - 1, day);
|
|
104
|
+
const formatted = utc
|
|
105
|
+
? d.toISOString()
|
|
106
|
+
: `${year}-${pad(month)}-${pad(day)}T${pad(hour)}:${pad(minute)}:${pad(second)}.${pad(millisecond, 3)}`;
|
|
107
|
+
return {
|
|
108
|
+
year,
|
|
109
|
+
month,
|
|
110
|
+
day,
|
|
111
|
+
hour,
|
|
112
|
+
minute,
|
|
113
|
+
second,
|
|
114
|
+
millisecond,
|
|
115
|
+
epochMillis: d.getTime(),
|
|
116
|
+
epochSeconds: Math.floor(d.getTime() / 1000),
|
|
117
|
+
dayOfWeek: isoDayOfWeek(datePart),
|
|
118
|
+
dayOfYear: dayOfYear(datePart),
|
|
119
|
+
quarter: quarter(month - 1),
|
|
120
|
+
formatted,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Builds a date result object (no time component).
|
|
125
|
+
*
|
|
126
|
+
* @param d - The Date object
|
|
127
|
+
* @returns An object with year, month, day, epochMillis, dayOfWeek, dayOfYear, quarter, formatted
|
|
128
|
+
*/
|
|
129
|
+
function buildDateObject(d) {
|
|
130
|
+
const year = d.getFullYear();
|
|
131
|
+
const month = d.getMonth() + 1;
|
|
132
|
+
const day = d.getDate();
|
|
133
|
+
// Strip time component for epoch calculation
|
|
134
|
+
const dateOnly = new Date(year, month - 1, day);
|
|
135
|
+
return {
|
|
136
|
+
year,
|
|
137
|
+
month,
|
|
138
|
+
day,
|
|
139
|
+
epochMillis: dateOnly.getTime(),
|
|
140
|
+
dayOfWeek: isoDayOfWeek(dateOnly),
|
|
141
|
+
dayOfYear: dayOfYear(dateOnly),
|
|
142
|
+
quarter: quarter(month - 1),
|
|
143
|
+
formatted: `${year}-${pad(month)}-${pad(day)}`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Builds a time result object (no date component).
|
|
148
|
+
*
|
|
149
|
+
* @param d - The Date object
|
|
150
|
+
* @param utc - If true, use UTC values; if false, use local values
|
|
151
|
+
* @returns An object with hour, minute, second, millisecond, formatted
|
|
152
|
+
*/
|
|
153
|
+
function buildTimeObject(d, utc) {
|
|
154
|
+
const hour = utc ? d.getUTCHours() : d.getHours();
|
|
155
|
+
const minute = utc ? d.getUTCMinutes() : d.getMinutes();
|
|
156
|
+
const second = utc ? d.getUTCSeconds() : d.getSeconds();
|
|
157
|
+
const millisecond = utc ? d.getUTCMilliseconds() : d.getMilliseconds();
|
|
158
|
+
const timePart = `${pad(hour)}:${pad(minute)}:${pad(second)}.${pad(millisecond, 3)}`;
|
|
159
|
+
const formatted = utc ? `${timePart}Z` : timePart;
|
|
160
|
+
return {
|
|
161
|
+
hour,
|
|
162
|
+
minute,
|
|
163
|
+
second,
|
|
164
|
+
millisecond,
|
|
165
|
+
formatted,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=temporal_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal_utils.js","sourceRoot":"","sources":["../../../src/parsing/functions/temporal_utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Function from "./function";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a time value (with timezone offset awareness).
|
|
4
|
+
* When called with no arguments, returns the current UTC time.
|
|
5
|
+
* When called with a string argument, parses it as an ISO 8601 time.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```
|
|
9
|
+
* RETURN time() AS now
|
|
10
|
+
* RETURN time('12:30:00') AS t
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare class Time extends Function {
|
|
14
|
+
constructor();
|
|
15
|
+
value(): any;
|
|
16
|
+
}
|
|
17
|
+
export default Time;
|
|
18
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/time.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC;;;;;;;;;;GAUG;AACH,cAuBM,IAAK,SAAQ,QAAQ;;IAMhB,KAAK,IAAI,GAAG;CAWtB;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 time value (with timezone offset awareness).
|
|
17
|
+
* When called with no arguments, returns the current UTC time.
|
|
18
|
+
* When called with a string argument, parses it as an ISO 8601 time.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```
|
|
22
|
+
* RETURN time() AS now
|
|
23
|
+
* RETURN time('12:30:00') AS t
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
let Time = class Time extends function_1.default {
|
|
27
|
+
constructor() {
|
|
28
|
+
super("time");
|
|
29
|
+
this._expectedParameterCount = null;
|
|
30
|
+
}
|
|
31
|
+
value() {
|
|
32
|
+
const children = this.getChildren();
|
|
33
|
+
if (children.length > 1) {
|
|
34
|
+
throw new Error("time() accepts at most one argument");
|
|
35
|
+
}
|
|
36
|
+
const d = children.length === 1 ? (0, temporal_utils_1.parseTemporalArg)(children[0].value(), "time") : new Date();
|
|
37
|
+
return (0, temporal_utils_1.buildTimeObject)(d, true);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
Time = __decorate([
|
|
41
|
+
(0, function_metadata_1.FunctionDef)({
|
|
42
|
+
description: "Returns a time value. With no arguments returns the current UTC time. " +
|
|
43
|
+
"Accepts an ISO 8601 time string or a map of components (hour, minute, second, millisecond).",
|
|
44
|
+
category: "scalar",
|
|
45
|
+
parameters: [
|
|
46
|
+
{
|
|
47
|
+
name: "input",
|
|
48
|
+
description: "Optional. An ISO 8601 time string (HH:MM:SS) or a map of components.",
|
|
49
|
+
type: "string",
|
|
50
|
+
required: false,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
output: {
|
|
54
|
+
description: "A time object with properties: hour, minute, second, millisecond, formatted",
|
|
55
|
+
type: "object",
|
|
56
|
+
},
|
|
57
|
+
examples: [
|
|
58
|
+
"RETURN time() AS now",
|
|
59
|
+
"RETURN time('12:30:00') AS t",
|
|
60
|
+
"WITH time() AS t RETURN t.hour, t.minute",
|
|
61
|
+
],
|
|
62
|
+
})
|
|
63
|
+
], Time);
|
|
64
|
+
exports.default = Time;
|
|
65
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/parsing/functions/time.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AAClD,qDAAqE;AAErE;;;;;;;;;;GAUG;AAwBH,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,kBAAQ;IACvB;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,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,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,CAAC,GACH,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,iCAAgB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAEvF,OAAO,IAAA,gCAAe,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;CACJ,CAAA;AAjBK,IAAI;IAvBT,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,wEAAwE;YACxE,6FAA6F;QACjG,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,sBAAsB;YACtB,8BAA8B;YAC9B,0CAA0C;SAC7C;KACJ,CAAC;GACI,IAAI,CAiBT;AAED,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Function from "./function";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the number of milliseconds since the Unix epoch (1970-01-01T00:00:00Z).
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```
|
|
7
|
+
* RETURN timestamp() AS ts
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
declare class Timestamp extends Function {
|
|
11
|
+
constructor();
|
|
12
|
+
value(): any;
|
|
13
|
+
}
|
|
14
|
+
export default Timestamp;
|
|
15
|
+
//# sourceMappingURL=timestamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC;;;;;;;GAOG;AACH,cAcM,SAAU,SAAQ,QAAQ;;IAMrB,KAAK,IAAI,GAAG;CAGtB;AAED,eAAe,SAAS,CAAC"}
|