flowquery 1.0.79 → 1.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
+ import ASTNode from "../ast_node";
1
2
  import Function from "./function";
2
3
  declare class Round extends Function {
3
4
  constructor();
5
+ set parameters(nodes: ASTNode[]);
4
6
  value(): any;
5
7
  }
6
8
  export default Round;
@@ -1 +1 @@
1
- {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/round.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAOM,KAAM,SAAQ,QAAQ;;IAKjB,KAAK,IAAI,GAAG;CAUtB;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/round.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAeM,KAAM,SAAQ,QAAQ;;IAIxB,IAAW,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAKrC;IACM,KAAK,IAAI,GAAG;CAuBtB;AAED,eAAe,KAAK,CAAC"}
@@ -14,26 +14,51 @@ const function_metadata_1 = require("./function_metadata");
14
14
  let Round = class Round extends function_1.default {
15
15
  constructor() {
16
16
  super("round");
17
- this._expectedParameterCount = 1;
17
+ }
18
+ set parameters(nodes) {
19
+ if (nodes.length < 1 || nodes.length > 2) {
20
+ throw new Error(`Function round expected 1 or 2 parameters, but got ${nodes.length}`);
21
+ }
22
+ this.children = nodes;
18
23
  }
19
24
  value() {
20
- const value = this.getChildren()[0].value();
25
+ const children = this.getChildren();
26
+ const value = children[0].value();
21
27
  if (value === null || value === undefined) {
22
28
  return null;
23
29
  }
24
30
  if (typeof value !== "number") {
25
31
  throw new Error("Invalid argument for round function");
26
32
  }
27
- return Math.round(value);
33
+ if (children.length === 1) {
34
+ return Math.round(value);
35
+ }
36
+ const precision = children[1].value();
37
+ if (precision === null || precision === undefined) {
38
+ return null;
39
+ }
40
+ if (typeof precision !== "number" || !Number.isInteger(precision)) {
41
+ throw new Error("Invalid precision argument for round function");
42
+ }
43
+ // Round half away from zero to `precision` decimal places.
44
+ const factor = Math.pow(10, precision);
45
+ return (Math.sign(value) * Math.round(Math.abs(value) * factor)) / factor;
28
46
  }
29
47
  };
30
48
  Round = __decorate([
31
49
  (0, function_metadata_1.FunctionDef)({
32
- description: "Rounds a number to the nearest integer",
50
+ description: "Rounds a number to the nearest integer, or to an optional number of decimal places",
33
51
  category: "scalar",
34
- parameters: [{ name: "value", description: "Number to round", type: "number" }],
35
- output: { description: "Rounded integer", type: "number", example: 4 },
36
- examples: ["WITH 3.7 AS n RETURN round(n)"],
52
+ parameters: [
53
+ { name: "value", description: "Number to round", type: "number" },
54
+ {
55
+ name: "precision",
56
+ description: "Number of decimal places to round to (optional)",
57
+ type: "integer",
58
+ },
59
+ ],
60
+ output: { description: "Rounded number", type: "number", example: 4 },
61
+ examples: ["WITH 3.7 AS n RETURN round(n)", "RETURN round(3.14159, 2)"],
37
62
  })
38
63
  ], Round);
39
64
  exports.default = Round;
@@ -1 +1 @@
1
- {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/parsing/functions/round.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAAkC;AAClC,2DAAkD;AASlD,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CACJ,CAAA;AAfK,KAAK;IAPV,IAAA,+BAAW,EAAC;QACT,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/E,MAAM,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACtE,QAAQ,EAAE,CAAC,+BAA+B,CAAC;KAC9C,CAAC;GACI,KAAK,CAeV;AAED,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/parsing/functions/round.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,0DAAkC;AAClC,2DAAkD;AAiBlD,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD,IAAW,UAAU,CAAC,KAAgB;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,sDAAsD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IACM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,2DAA2D;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9E,CAAC;CACJ,CAAA;AAjCK,KAAK;IAfV,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,oFAAoF;QACxF,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;YACjE;gBACI,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,iDAAiD;gBAC9D,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACrE,QAAQ,EAAE,CAAC,+BAA+B,EAAE,0BAA0B,CAAC;KAC1E,CAAC;GACI,KAAK,CAiCV;AAED,kBAAe,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowquery",
3
- "version": "1.0.79",
3
+ "version": "1.0.80",
4
4
  "description": "A declarative query language for data processing pipelines.",
5
5
  "main": "dist/index.node.js",
6
6
  "types": "dist/index.node.d.ts",