@uwdata/mosaic-sql 0.18.0 → 0.20.0
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/src/ast/aggregate.d.ts +0 -4
- package/dist/src/ast/aggregate.d.ts.map +1 -1
- package/dist/src/ast/aggregate.js +0 -15
- package/dist/src/ast/aggregate.js.map +1 -1
- package/dist/src/ast/between-op.d.ts +0 -8
- package/dist/src/ast/between-op.d.ts.map +1 -1
- package/dist/src/ast/between-op.js +0 -12
- package/dist/src/ast/between-op.js.map +1 -1
- package/dist/src/ast/binary-op.d.ts +0 -4
- package/dist/src/ast/binary-op.d.ts.map +1 -1
- package/dist/src/ast/binary-op.js +0 -6
- package/dist/src/ast/binary-op.js.map +1 -1
- package/dist/src/ast/case.d.ts +0 -8
- package/dist/src/ast/case.d.ts.map +1 -1
- package/dist/src/ast/case.js +0 -16
- package/dist/src/ast/case.js.map +1 -1
- package/dist/src/ast/cast.d.ts +0 -4
- package/dist/src/ast/cast.d.ts.map +1 -1
- package/dist/src/ast/cast.js +0 -7
- package/dist/src/ast/cast.js.map +1 -1
- package/dist/src/ast/collate.d.ts +0 -4
- package/dist/src/ast/collate.d.ts.map +1 -1
- package/dist/src/ast/collate.js +0 -6
- package/dist/src/ast/collate.js.map +1 -1
- package/dist/src/ast/column-ref.d.ts +0 -4
- package/dist/src/ast/column-ref.d.ts.map +1 -1
- package/dist/src/ast/column-ref.js +0 -10
- package/dist/src/ast/column-ref.js.map +1 -1
- package/dist/src/ast/fragment.d.ts +0 -4
- package/dist/src/ast/fragment.d.ts.map +1 -1
- package/dist/src/ast/fragment.js +0 -6
- package/dist/src/ast/fragment.js.map +1 -1
- package/dist/src/ast/from.d.ts +10 -3
- package/dist/src/ast/from.d.ts.map +1 -1
- package/dist/src/ast/from.js +11 -12
- package/dist/src/ast/from.js.map +1 -1
- package/dist/src/ast/function.d.ts +0 -4
- package/dist/src/ast/function.d.ts.map +1 -1
- package/dist/src/ast/function.js +0 -7
- package/dist/src/ast/function.js.map +1 -1
- package/dist/src/ast/in-op.d.ts +0 -4
- package/dist/src/ast/in-op.d.ts.map +1 -1
- package/dist/src/ast/in-op.js +0 -6
- package/dist/src/ast/in-op.js.map +1 -1
- package/dist/src/ast/interval.d.ts +0 -4
- package/dist/src/ast/interval.d.ts.map +1 -1
- package/dist/src/ast/interval.js +0 -6
- package/dist/src/ast/interval.js.map +1 -1
- package/dist/src/ast/join.d.ts +45 -0
- package/dist/src/ast/join.d.ts.map +1 -0
- package/dist/src/ast/join.js +47 -0
- package/dist/src/ast/join.js.map +1 -0
- package/dist/src/ast/list.d.ts +11 -0
- package/dist/src/ast/list.d.ts.map +1 -0
- package/dist/src/ast/list.js +15 -0
- package/dist/src/ast/list.js.map +1 -0
- package/dist/src/ast/literal.d.ts +0 -4
- package/dist/src/ast/literal.d.ts.map +1 -1
- package/dist/src/ast/literal.js +0 -6
- package/dist/src/ast/literal.js.map +1 -1
- package/dist/src/ast/logical-op.d.ts +0 -4
- package/dist/src/ast/logical-op.d.ts.map +1 -1
- package/dist/src/ast/logical-op.js +0 -9
- package/dist/src/ast/logical-op.js.map +1 -1
- package/dist/src/ast/node.d.ts +13 -0
- package/dist/src/ast/node.d.ts.map +1 -1
- package/dist/src/ast/node.js +25 -3
- package/dist/src/ast/node.js.map +1 -1
- package/dist/src/ast/order-by.d.ts +0 -4
- package/dist/src/ast/order-by.d.ts.map +1 -1
- package/dist/src/ast/order-by.js +0 -13
- package/dist/src/ast/order-by.js.map +1 -1
- package/dist/src/ast/param.d.ts +0 -4
- package/dist/src/ast/param.d.ts.map +1 -1
- package/dist/src/ast/param.js +0 -7
- package/dist/src/ast/param.js.map +1 -1
- package/dist/src/ast/query.d.ts +43 -15
- package/dist/src/ast/query.d.ts.map +1 -1
- package/dist/src/ast/query.js +71 -92
- package/dist/src/ast/query.js.map +1 -1
- package/dist/src/ast/sample.d.ts +0 -4
- package/dist/src/ast/sample.d.ts.map +1 -1
- package/dist/src/ast/sample.js +0 -9
- package/dist/src/ast/sample.js.map +1 -1
- package/dist/src/ast/select.d.ts +0 -4
- package/dist/src/ast/select.d.ts.map +1 -1
- package/dist/src/ast/select.js +0 -16
- package/dist/src/ast/select.js.map +1 -1
- package/dist/src/ast/subquery.d.ts +0 -4
- package/dist/src/ast/subquery.d.ts.map +1 -1
- package/dist/src/ast/subquery.js +0 -6
- package/dist/src/ast/subquery.js.map +1 -1
- package/dist/src/ast/table-ref.d.ts +0 -4
- package/dist/src/ast/table-ref.d.ts.map +1 -1
- package/dist/src/ast/table-ref.js +0 -7
- package/dist/src/ast/table-ref.js.map +1 -1
- package/dist/src/ast/unary-op.d.ts +0 -8
- package/dist/src/ast/unary-op.d.ts.map +1 -1
- package/dist/src/ast/unary-op.js +0 -12
- package/dist/src/ast/unary-op.js.map +1 -1
- package/dist/src/ast/unnest.d.ts +15 -0
- package/dist/src/ast/unnest.d.ts.map +1 -0
- package/dist/src/ast/unnest.js +21 -0
- package/dist/src/ast/unnest.js.map +1 -0
- package/dist/src/ast/verbatim.d.ts +0 -4
- package/dist/src/ast/verbatim.d.ts.map +1 -1
- package/dist/src/ast/verbatim.js +0 -6
- package/dist/src/ast/verbatim.js.map +1 -1
- package/dist/src/ast/window-frame.d.ts +0 -8
- package/dist/src/ast/window-frame.d.ts.map +1 -1
- package/dist/src/ast/window-frame.js +1 -29
- package/dist/src/ast/window-frame.js.map +1 -1
- package/dist/src/ast/window.d.ts +0 -16
- package/dist/src/ast/window.d.ts.map +1 -1
- package/dist/src/ast/window.js +0 -39
- package/dist/src/ast/window.js.map +1 -1
- package/dist/src/ast/with.d.ts +0 -4
- package/dist/src/ast/with.d.ts.map +1 -1
- package/dist/src/ast/with.js +0 -10
- package/dist/src/ast/with.js.map +1 -1
- package/dist/src/constants.d.ts +4 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +4 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/functions/from.d.ts +11 -0
- package/dist/src/functions/from.d.ts.map +1 -0
- package/dist/src/functions/from.js +12 -0
- package/dist/src/functions/from.js.map +1 -0
- package/dist/src/functions/join.d.ts +49 -0
- package/dist/src/functions/join.d.ts.map +1 -0
- package/dist/src/functions/join.js +50 -0
- package/dist/src/functions/join.js.map +1 -0
- package/dist/src/functions/list.d.ts +31 -0
- package/dist/src/functions/list.d.ts.map +1 -0
- package/dist/src/functions/list.js +49 -0
- package/dist/src/functions/list.js.map +1 -0
- package/dist/src/functions/unnest.d.ts +10 -0
- package/dist/src/functions/unnest.d.ts.map +1 -0
- package/dist/src/functions/unnest.js +12 -0
- package/dist/src/functions/unnest.js.map +1 -0
- package/dist/src/index.d.ts +11 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/init.d.ts +2 -0
- package/dist/src/init.d.ts.map +1 -0
- package/dist/src/init.js +5 -0
- package/dist/src/init.js.map +1 -0
- package/dist/src/transforms/filter-query.d.ts.map +1 -1
- package/dist/src/transforms/filter-query.js +2 -0
- package/dist/src/transforms/filter-query.js.map +1 -1
- package/dist/src/visit/codegen/duckdb.d.ts +49 -0
- package/dist/src/visit/codegen/duckdb.d.ts.map +1 -0
- package/dist/src/visit/codegen/duckdb.js +332 -0
- package/dist/src/visit/codegen/duckdb.js.map +1 -0
- package/dist/src/visit/codegen/sql.d.ts +60 -0
- package/dist/src/visit/codegen/sql.d.ts.map +1 -0
- package/dist/src/visit/codegen/sql.js +85 -0
- package/dist/src/visit/codegen/sql.js.map +1 -0
- package/dist/src/visit/duckdb-visitor.d.ts +50 -0
- package/dist/src/visit/duckdb-visitor.d.ts.map +1 -0
- package/dist/src/visit/duckdb-visitor.js +350 -0
- package/dist/src/visit/duckdb-visitor.js.map +1 -0
- package/dist/src/visit/recurse.d.ts.map +1 -1
- package/dist/src/visit/recurse.js +3 -1
- package/dist/src/visit/recurse.js.map +1 -1
- package/dist/src/visit/to-string-visitor.d.ts +60 -0
- package/dist/src/visit/to-string-visitor.d.ts.map +1 -0
- package/dist/src/visit/to-string-visitor.js +80 -0
- package/dist/src/visit/to-string-visitor.js.map +1 -0
- package/package.json +2 -2
- package/src/ast/aggregate.ts +0 -16
- package/src/ast/between-op.ts +0 -14
- package/src/ast/binary-op.ts +0 -7
- package/src/ast/case.ts +0 -18
- package/src/ast/cast.ts +0 -8
- package/src/ast/collate.ts +0 -7
- package/src/ast/column-ref.ts +0 -11
- package/src/ast/fragment.ts +0 -7
- package/src/ast/from.ts +12 -12
- package/src/ast/function.ts +0 -8
- package/src/ast/in-op.ts +0 -7
- package/src/ast/interval.ts +0 -7
- package/src/ast/join.ts +66 -0
- package/src/ast/list.ts +16 -0
- package/src/ast/literal.ts +0 -7
- package/src/ast/logical-op.ts +0 -10
- package/src/ast/node.ts +30 -3
- package/src/ast/order-by.ts +0 -14
- package/src/ast/param.ts +0 -8
- package/src/ast/query.ts +80 -104
- package/src/ast/sample.ts +0 -10
- package/src/ast/select.ts +0 -18
- package/src/ast/subquery.ts +0 -7
- package/src/ast/table-ref.ts +0 -8
- package/src/ast/unary-op.ts +0 -14
- package/src/ast/unnest.ts +22 -0
- package/src/ast/verbatim.ts +0 -7
- package/src/ast/window-frame.ts +1 -32
- package/src/ast/window.ts +0 -43
- package/src/ast/with.ts +0 -11
- package/src/constants.ts +4 -0
- package/src/functions/from.ts +18 -0
- package/src/functions/join.ts +101 -0
- package/src/functions/list.ts +63 -0
- package/src/functions/unnest.ts +13 -0
- package/src/index.ts +13 -1
- package/src/init.ts +5 -0
- package/src/transforms/filter-query.ts +2 -0
- package/src/visit/codegen/duckdb.ts +444 -0
- package/src/visit/codegen/sql.ts +213 -0
- package/src/visit/recurse.ts +4 -0
|
@@ -27,10 +27,6 @@ export declare class WindowFrameNode extends SQLNode {
|
|
|
27
27
|
* @param exclude The window frame exclusion criteria.
|
|
28
28
|
*/
|
|
29
29
|
constructor(frameType: FrameType, extent: FrameExtent, exclude?: FrameExclude);
|
|
30
|
-
/**
|
|
31
|
-
* Generate a SQL query string for this node.
|
|
32
|
-
*/
|
|
33
|
-
toString(): string;
|
|
34
30
|
}
|
|
35
31
|
export declare class WindowFrameExprNode extends SQLNode {
|
|
36
32
|
/** The window frame extent. */
|
|
@@ -46,9 +42,5 @@ export declare class WindowFrameExprNode extends SQLNode {
|
|
|
46
42
|
* @param expr The window frame extent expression.
|
|
47
43
|
*/
|
|
48
44
|
constructor(scope: FrameScope, expr?: FrameValue | null);
|
|
49
|
-
/**
|
|
50
|
-
* Generate a SQL query string for this node.
|
|
51
|
-
*/
|
|
52
|
-
toString(): string;
|
|
53
45
|
}
|
|
54
46
|
//# sourceMappingURL=window-frame.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-frame.d.ts","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"window-frame.d.ts","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAI,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1E,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEhC;;;;;OAKG;gBAED,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,YAAY;CAOzB;AAED,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;gBACS,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,UAAU,GAAG,IAAW;CAK9D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WINDOW_EXTENT_EXPR, WINDOW_FRAME } from '../constants.js';
|
|
2
2
|
import { isParamLike } from '../util/type-check.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SQLNode } from './node.js';
|
|
4
4
|
import { ParamNode } from './param.js';
|
|
5
5
|
export const ROWS = 'ROWS';
|
|
6
6
|
export const RANGE = 'RANGE';
|
|
@@ -28,25 +28,6 @@ export class WindowFrameNode extends SQLNode {
|
|
|
28
28
|
this.extent = isParamLike(extent) ? new ParamNode(extent) : extent;
|
|
29
29
|
this.exclude = exclude;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Generate a SQL query string for this node.
|
|
33
|
-
*/
|
|
34
|
-
toString() {
|
|
35
|
-
const { frameType, exclude, extent } = this;
|
|
36
|
-
const [prev, next] = isNode(extent)
|
|
37
|
-
? extent.value
|
|
38
|
-
: extent;
|
|
39
|
-
const a = asFrameExpr(prev, PRECEDING);
|
|
40
|
-
const b = asFrameExpr(next, FOLLOWING);
|
|
41
|
-
return `${frameType} BETWEEN ${a} AND ${b}${exclude ? ` ${exclude}` : ''}`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function asFrameExpr(value, scope) {
|
|
45
|
-
return value instanceof WindowFrameExprNode ? value
|
|
46
|
-
: value != null && typeof value !== 'number' ? `${value} ${scope}`
|
|
47
|
-
: value === 0 ? CURRENT_ROW
|
|
48
|
-
: !(value && Number.isFinite(value)) ? `${UNBOUNDED} ${scope}`
|
|
49
|
-
: `${Math.abs(value)} ${scope}`;
|
|
50
31
|
}
|
|
51
32
|
export class WindowFrameExprNode extends SQLNode {
|
|
52
33
|
/** The window frame extent. */
|
|
@@ -66,14 +47,5 @@ export class WindowFrameExprNode extends SQLNode {
|
|
|
66
47
|
this.scope = scope;
|
|
67
48
|
this.expr = expr;
|
|
68
49
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Generate a SQL query string for this node.
|
|
71
|
-
*/
|
|
72
|
-
toString() {
|
|
73
|
-
const { scope, expr } = this;
|
|
74
|
-
return scope === CURRENT_ROW
|
|
75
|
-
? scope
|
|
76
|
-
: `${expr ?? UNBOUNDED} ${scope}`;
|
|
77
|
-
}
|
|
78
50
|
}
|
|
79
51
|
//# sourceMappingURL=window-frame.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-frame.js","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAiB,
|
|
1
|
+
{"version":3,"file":"window-frame.js","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IAC5C,SAAS,CAAY;IAC9B,+BAA+B;IACtB,MAAM,CAAiC;IAChD,2CAA2C;IAClC,OAAO,CAAgB;IAEhC;;;;;OAKG;IACH,YACE,SAAoB,EACpB,MAAmB,EACnB,OAAsB;QAEtB,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IACtB,KAAK,CAAa;IAC3B;;;OAGG;IACM,IAAI,CAAoB;IAEjC;;;;OAIG;IACH,YAAY,KAAiB,EAAE,OAA0B,IAAI;QAC3D,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
package/dist/src/ast/window.d.ts
CHANGED
|
@@ -13,10 +13,6 @@ export declare class WindowClauseNode extends SQLNode {
|
|
|
13
13
|
* @param def The window definition.
|
|
14
14
|
*/
|
|
15
15
|
constructor(name: string, def: WindowDefNode);
|
|
16
|
-
/**
|
|
17
|
-
* Generate a SQL query string for this node.
|
|
18
|
-
*/
|
|
19
|
-
toString(): string;
|
|
20
16
|
}
|
|
21
17
|
export declare class WindowNode extends ExprNode {
|
|
22
18
|
readonly func: WindowFunctionNode | AggregateNode;
|
|
@@ -51,10 +47,6 @@ export declare class WindowNode extends ExprNode {
|
|
|
51
47
|
* @returns A new window node.
|
|
52
48
|
*/
|
|
53
49
|
frame(framedef: WindowFrameNode): WindowNode;
|
|
54
|
-
/**
|
|
55
|
-
* Generate a SQL query string for this node.
|
|
56
|
-
*/
|
|
57
|
-
toString(): string;
|
|
58
50
|
}
|
|
59
51
|
export declare class WindowFunctionNode extends ExprNode {
|
|
60
52
|
/** The window function name. */
|
|
@@ -74,10 +66,6 @@ export declare class WindowFunctionNode extends ExprNode {
|
|
|
74
66
|
* Note that this argument ordering is distinct from the window ordering.
|
|
75
67
|
*/
|
|
76
68
|
constructor(name: WindowFunctionName, args?: ExprNode[], ignoreNulls?: boolean, argOrder?: OrderByExpr);
|
|
77
|
-
/**
|
|
78
|
-
* Generate a SQL query string for this node.
|
|
79
|
-
*/
|
|
80
|
-
toString(): string;
|
|
81
69
|
}
|
|
82
70
|
export declare class WindowDefNode extends SQLNode {
|
|
83
71
|
/** The base window definition name. */
|
|
@@ -120,9 +108,5 @@ export declare class WindowDefNode extends SQLNode {
|
|
|
120
108
|
* @return A new window definition node.
|
|
121
109
|
*/
|
|
122
110
|
frame(framedef: WindowFrameNode): WindowDefNode;
|
|
123
|
-
/**
|
|
124
|
-
* Generate a SQL query string for this node.
|
|
125
|
-
*/
|
|
126
|
-
toString(): string;
|
|
127
111
|
}
|
|
128
112
|
//# sourceMappingURL=window.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,OAAO;IAC1C,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;CAK7C;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAE3B;;;;OAIG;gBAED,IAAI,EAAE,kBAAkB,GAAG,aAAa,EACxC,IAAI,GAAE,aAAmC;IAO3C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;CAGhC;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE3B;;;;;;;OAOG;gBAED,IAAI,EAAE,kBAAkB,EACxB,IAAI,GAAE,QAAQ,EAAO,EACrB,WAAW,GAAE,OAAe,EAC5B,QAAQ,GAAE,WAAgB;CAQ7B;AAED,qBAAa,aAAc,SAAQ,OAAO;IACxC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;gBAED,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAClB,QAAQ,CAAC,EAAE,eAAe;IAS5B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;CAGhC"}
|
package/dist/src/ast/window.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_FUNCTION } from '../constants.js';
|
|
2
2
|
import { nodeList } from '../util/function.js';
|
|
3
|
-
import { quoteIdentifier } from '../util/string.js';
|
|
4
3
|
import { ExprNode, SQLNode } from './node.js';
|
|
5
4
|
export class WindowClauseNode extends SQLNode {
|
|
6
5
|
/** The window name. */
|
|
@@ -17,12 +16,6 @@ export class WindowClauseNode extends SQLNode {
|
|
|
17
16
|
this.name = name;
|
|
18
17
|
this.def = def;
|
|
19
18
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Generate a SQL query string for this node.
|
|
22
|
-
*/
|
|
23
|
-
toString() {
|
|
24
|
-
return `${quoteIdentifier(this.name)} AS ${this.def}`;
|
|
25
|
-
}
|
|
26
19
|
}
|
|
27
20
|
export class WindowNode extends ExprNode {
|
|
28
21
|
func;
|
|
@@ -69,12 +62,6 @@ export class WindowNode extends ExprNode {
|
|
|
69
62
|
frame(framedef) {
|
|
70
63
|
return new WindowNode(this.func, this.def.frame(framedef));
|
|
71
64
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Generate a SQL query string for this node.
|
|
74
|
-
*/
|
|
75
|
-
toString() {
|
|
76
|
-
return `${this.func} OVER ${this.def}`;
|
|
77
|
-
}
|
|
78
65
|
}
|
|
79
66
|
export class WindowFunctionNode extends ExprNode {
|
|
80
67
|
/** The window function name. */
|
|
@@ -100,18 +87,6 @@ export class WindowFunctionNode extends ExprNode {
|
|
|
100
87
|
this.ignoreNulls = ignoreNulls;
|
|
101
88
|
this.order = nodeList([argOrder]);
|
|
102
89
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Generate a SQL query string for this node.
|
|
105
|
-
*/
|
|
106
|
-
toString() {
|
|
107
|
-
const { name, args, ignoreNulls, order } = this;
|
|
108
|
-
const arg = [
|
|
109
|
-
args.join(', '),
|
|
110
|
-
order.length ? `ORDER BY ${order.join(', ')}` : '',
|
|
111
|
-
ignoreNulls ? 'IGNORE NULLS' : ''
|
|
112
|
-
].filter(x => x).join(' ');
|
|
113
|
-
return `${name}(${arg})`;
|
|
114
|
-
}
|
|
115
90
|
}
|
|
116
91
|
export class WindowDefNode extends SQLNode {
|
|
117
92
|
/** The base window definition name. */
|
|
@@ -168,20 +143,6 @@ export class WindowDefNode extends SQLNode {
|
|
|
168
143
|
frame(framedef) {
|
|
169
144
|
return deriveDef(this, { framedef });
|
|
170
145
|
}
|
|
171
|
-
/**
|
|
172
|
-
* Generate a SQL query string for this node.
|
|
173
|
-
*/
|
|
174
|
-
toString() {
|
|
175
|
-
const { name, partition, order, framedef } = this;
|
|
176
|
-
const base = name && quoteIdentifier(name);
|
|
177
|
-
const def = [
|
|
178
|
-
base,
|
|
179
|
-
partition?.length && `PARTITION BY ${partition.join(', ')}`,
|
|
180
|
-
order?.length && `ORDER BY ${order.join(', ')}`,
|
|
181
|
-
framedef
|
|
182
|
-
].filter(x => x);
|
|
183
|
-
return base && def.length < 2 ? base : `(${def.join(' ')})`;
|
|
184
|
-
}
|
|
185
146
|
}
|
|
186
147
|
/**
|
|
187
148
|
* Derive a new window definition node from an existing one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ast/with.d.ts
CHANGED
|
@@ -17,9 +17,5 @@ export declare class WithClauseNode extends SQLNode {
|
|
|
17
17
|
* `undefined` or `null`), materialization is decided by the database.
|
|
18
18
|
*/
|
|
19
19
|
constructor(name: string, query: Query, materialized?: boolean | null);
|
|
20
|
-
/**
|
|
21
|
-
* Generate a SQL query string for this node.
|
|
22
|
-
*/
|
|
23
|
-
toString(): string;
|
|
24
20
|
}
|
|
25
21
|
//# sourceMappingURL=with.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,GAAE,OAAO,GAAG,IAAW;
|
|
1
|
+
{"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,GAAE,OAAO,GAAG,IAAW;CAOtC"}
|
package/dist/src/ast/with.js
CHANGED
|
@@ -22,15 +22,5 @@ export class WithClauseNode extends SQLNode {
|
|
|
22
22
|
this.query = query;
|
|
23
23
|
this.materialized = materialized;
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Generate a SQL query string for this node.
|
|
27
|
-
*/
|
|
28
|
-
toString() {
|
|
29
|
-
const flag = this.materialized;
|
|
30
|
-
const mat = flag === true ? ' MATERIALIZED'
|
|
31
|
-
: flag === false ? ' NOT MATERIALIZED'
|
|
32
|
-
: '';
|
|
33
|
-
return `"${this.name}" AS${mat} (${this.query})`;
|
|
34
|
-
}
|
|
35
25
|
}
|
|
36
26
|
//# sourceMappingURL=with.js.map
|
package/dist/src/ast/with.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with.js","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IACrC,IAAI,CAAS;IACtB,+CAA+C;IACtC,KAAK,CAAQ;IACtB,8DAA8D;IACrD,YAAY,CAAiB;IAEtC;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,KAAY,EACZ,eAA+B,IAAI;QAEnC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"with.js","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IACrC,IAAI,CAAS;IACtB,+CAA+C;IACtC,KAAK,CAAQ;IACtB,8DAA8D;IACrD,YAAY,CAAiB;IAEtC;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,KAAY,EACZ,eAA+B,IAAI;QAEnC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export declare const COLUMN_PARAM = "COLUMN_PARAM";
|
|
|
3
3
|
export declare const TABLE_REF = "TABLE_REF";
|
|
4
4
|
export declare const LITERAL = "LITERAL";
|
|
5
5
|
export declare const INTERVAL = "INTERVAL";
|
|
6
|
+
export declare const LIST = "LIST";
|
|
7
|
+
export declare const UNNEST = "UNNEST";
|
|
6
8
|
export declare const ORDER_BY = "ORDER_BY";
|
|
7
9
|
export declare const CAST = "CAST";
|
|
8
10
|
export declare const CASE = "CASE";
|
|
@@ -22,6 +24,7 @@ export declare const WINDOW_FUNCTION = "WINDOW_FUNCTION";
|
|
|
22
24
|
export declare const WINDOW_DEF = "WINDOW_DEF";
|
|
23
25
|
export declare const WINDOW_FRAME = "WINDOW_FRAME";
|
|
24
26
|
export declare const WINDOW_EXTENT_EXPR = "WINDOW_EXTENT_EXPR";
|
|
27
|
+
export declare const CUSTOM = "CUSTOM";
|
|
25
28
|
export declare const EXPRESSION = "EXPRESSION";
|
|
26
29
|
export declare const FRAGMENT = "FRAGMENT";
|
|
27
30
|
export declare const VERBATIM = "VERBATIM";
|
|
@@ -30,6 +33,7 @@ export declare const WITH_CLAUSE = "WITH_CLAUSE";
|
|
|
30
33
|
export declare const WINDOW_CLAUSE = "WINDOW_CLAUSE";
|
|
31
34
|
export declare const SELECT_CLAUSE = "SELECT_CLAUSE";
|
|
32
35
|
export declare const FROM_CLAUSE = "FROM_CLAUSE";
|
|
36
|
+
export declare const JOIN_CLAUSE = "JOIN_CLAUSE";
|
|
33
37
|
export declare const SAMPLE_CLAUSE = "SAMPLE_CLAUSE";
|
|
34
38
|
export declare const SELECT_QUERY = "SELECT_QUERY";
|
|
35
39
|
export declare const DESCRIBE_QUERY = "DESCRIBE_QUERY";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,eAAe,oBAAoB,CAAC"}
|
package/dist/src/constants.js
CHANGED
|
@@ -3,6 +3,8 @@ export const COLUMN_PARAM = 'COLUMN_PARAM';
|
|
|
3
3
|
export const TABLE_REF = 'TABLE_REF';
|
|
4
4
|
export const LITERAL = 'LITERAL';
|
|
5
5
|
export const INTERVAL = 'INTERVAL';
|
|
6
|
+
export const LIST = 'LIST';
|
|
7
|
+
export const UNNEST = 'UNNEST';
|
|
6
8
|
export const ORDER_BY = 'ORDER_BY';
|
|
7
9
|
export const CAST = 'CAST';
|
|
8
10
|
export const CASE = 'CASE';
|
|
@@ -22,6 +24,7 @@ export const WINDOW_FUNCTION = 'WINDOW_FUNCTION';
|
|
|
22
24
|
export const WINDOW_DEF = 'WINDOW_DEF';
|
|
23
25
|
export const WINDOW_FRAME = 'WINDOW_FRAME';
|
|
24
26
|
export const WINDOW_EXTENT_EXPR = 'WINDOW_EXTENT_EXPR';
|
|
27
|
+
export const CUSTOM = 'CUSTOM';
|
|
25
28
|
export const EXPRESSION = 'EXPRESSION';
|
|
26
29
|
export const FRAGMENT = 'FRAGMENT';
|
|
27
30
|
export const VERBATIM = 'VERBATIM';
|
|
@@ -30,6 +33,7 @@ export const WITH_CLAUSE = 'WITH_CLAUSE';
|
|
|
30
33
|
export const WINDOW_CLAUSE = 'WINDOW_CLAUSE';
|
|
31
34
|
export const SELECT_CLAUSE = 'SELECT_CLAUSE';
|
|
32
35
|
export const FROM_CLAUSE = 'FROM_CLAUSE';
|
|
36
|
+
export const JOIN_CLAUSE = 'JOIN_CLAUSE';
|
|
33
37
|
export const SAMPLE_CLAUSE = 'SAMPLE_CLAUSE';
|
|
34
38
|
export const SELECT_QUERY = 'SELECT_QUERY';
|
|
35
39
|
export const DESCRIBE_QUERY = 'DESCRIBE_QUERY';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FromClauseNode } from "../ast/from.js";
|
|
2
|
+
import { SampleClauseNode } from "../ast/sample.js";
|
|
3
|
+
import { TableRefNode } from "../ast/table-ref.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create a new table FROM reference, applicable in a query or join.
|
|
6
|
+
* @param table The table.
|
|
7
|
+
* @param alias An optional table alias.
|
|
8
|
+
* @param sample An optional table sample to apply.
|
|
9
|
+
*/
|
|
10
|
+
export declare function from(table: string | string[] | TableRefNode, alias?: string, sample?: SampleClauseNode): FromClauseNode;
|
|
11
|
+
//# sourceMappingURL=from.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/functions/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,EACvC,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,kBAG1B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FromClauseNode } from "../ast/from.js";
|
|
2
|
+
import { asTableRef } from "../util/ast.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a new table FROM reference, applicable in a query or join.
|
|
5
|
+
* @param table The table.
|
|
6
|
+
* @param alias An optional table alias.
|
|
7
|
+
* @param sample An optional table sample to apply.
|
|
8
|
+
*/
|
|
9
|
+
export function from(table, alias, sample) {
|
|
10
|
+
return new FromClauseNode(asTableRef(table), alias, sample);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=from.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/functions/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,KAAuC,EACvC,KAAc,EACd,MAAyB;IAEzB,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,CAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ColumnRefNode } from '../ast/column-ref.js';
|
|
2
|
+
import { FromNode } from '../ast/from.js';
|
|
3
|
+
import { JoinNode, type JoinType } from '../ast/join.js';
|
|
4
|
+
import { ExprNode } from '../ast/node.js';
|
|
5
|
+
type TableArg = string | string[] | FromNode;
|
|
6
|
+
/** Options for a JOIN operation. */
|
|
7
|
+
interface JoinOptions {
|
|
8
|
+
/** The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI). */
|
|
9
|
+
type?: JoinType;
|
|
10
|
+
/**
|
|
11
|
+
* The join condition as a boolean expression.
|
|
12
|
+
* If specified, the *using* option must not be specified.
|
|
13
|
+
*/
|
|
14
|
+
on?: ExprNode;
|
|
15
|
+
/**
|
|
16
|
+
* The join condition as an array of columns to match.
|
|
17
|
+
* The column names must exist in both tables.
|
|
18
|
+
* If specified, the *on* option must not be specified.
|
|
19
|
+
*/
|
|
20
|
+
using?: (string | ColumnRefNode)[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a new cross (cartesian product) join.
|
|
24
|
+
* @param left The left table to join.
|
|
25
|
+
* @param right The right table to join.
|
|
26
|
+
*/
|
|
27
|
+
export declare function cross_join(left: TableArg, right: TableArg): JoinNode;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new POSITIONAL join.
|
|
30
|
+
* @param left The left table to join.
|
|
31
|
+
* @param right The right table to join.
|
|
32
|
+
*/
|
|
33
|
+
export declare function positional_join(left: TableArg, right: TableArg): JoinNode;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new join.
|
|
36
|
+
* @param left The left table to join.
|
|
37
|
+
* @param right The right table to join.
|
|
38
|
+
* @param options The join options.
|
|
39
|
+
*/
|
|
40
|
+
export declare function join(left: TableArg, right: TableArg, options?: JoinOptions): JoinNode;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new ASOF join.
|
|
43
|
+
* @param left The left table to join.
|
|
44
|
+
* @param right The right table to join.
|
|
45
|
+
* @param options The join options.
|
|
46
|
+
*/
|
|
47
|
+
export declare function asof_join(left: TableArg, right: TableArg, options: JoinOptions): JoinNode;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=join.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/functions/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC;AAE7C,oCAAoC;AACpC,UAAU,WAAW;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;CACpC;AAyBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,YAEzD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,YAE9D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,WAAW,YAQtB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,WAAW,YAMrB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FromNode } from '../ast/from.js';
|
|
2
|
+
import { JoinNode } from '../ast/join.js';
|
|
3
|
+
import { asNode, asTableRef } from '../util/ast.js';
|
|
4
|
+
function tableRef(x) {
|
|
5
|
+
return x instanceof FromNode ? x : asTableRef(x);
|
|
6
|
+
}
|
|
7
|
+
function makeJoin(left, right, variant, options = {}) {
|
|
8
|
+
if (options.on && options.using) {
|
|
9
|
+
throw new Error('Only one join condition (on or using) can be applied.');
|
|
10
|
+
}
|
|
11
|
+
return new JoinNode(tableRef(left), tableRef(right), variant, options.type, options.on, options.using?.map(c => asNode(c)));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a new cross (cartesian product) join.
|
|
15
|
+
* @param left The left table to join.
|
|
16
|
+
* @param right The right table to join.
|
|
17
|
+
*/
|
|
18
|
+
export function cross_join(left, right) {
|
|
19
|
+
return makeJoin(left, right, 'CROSS');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a new POSITIONAL join.
|
|
23
|
+
* @param left The left table to join.
|
|
24
|
+
* @param right The right table to join.
|
|
25
|
+
*/
|
|
26
|
+
export function positional_join(left, right) {
|
|
27
|
+
return makeJoin(left, right, 'POSITIONAL');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a new join.
|
|
31
|
+
* @param left The left table to join.
|
|
32
|
+
* @param right The right table to join.
|
|
33
|
+
* @param options The join options.
|
|
34
|
+
*/
|
|
35
|
+
export function join(left, right, options) {
|
|
36
|
+
return makeJoin(left, right, options?.on || options?.using ? 'REGULAR' : 'NATURAL', options);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a new ASOF join.
|
|
40
|
+
* @param left The left table to join.
|
|
41
|
+
* @param right The right table to join.
|
|
42
|
+
* @param options The join options.
|
|
43
|
+
*/
|
|
44
|
+
export function asof_join(left, right, options) {
|
|
45
|
+
if (!(options.on || options.using)) {
|
|
46
|
+
throw new Error('ASOF join requires a join condition.');
|
|
47
|
+
}
|
|
48
|
+
return makeJoin(left, right, 'ASOF', options);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=join.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/functions/join.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqBpD,SAAS,QAAQ,CAAC,CAAW;IAC3B,OAAO,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CACf,IAAc,EACd,KAAe,EACf,OAAqB,EACrB,UAAuB,EAAE;IAEzB,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,QAAQ,CACjB,QAAQ,CAAC,IAAI,CAAC,EACd,QAAQ,CAAC,KAAK,CAAC,EACf,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAkB,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,KAAe;IACxD,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,KAAe;IAC7D,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,IAAc,EACd,KAAe,EACf,OAAqB;IAErB,OAAO,QAAQ,CACb,IAAI,EACJ,KAAK,EACL,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrD,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,IAAc,EACd,KAAe,EACf,OAAoB;IAEpB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ExprValue } from "../types.js";
|
|
2
|
+
import { ListNode } from "../ast/list.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a List containing the argument values.
|
|
5
|
+
* @param values
|
|
6
|
+
*/
|
|
7
|
+
export declare function list(values: ExprValue[]): ListNode;
|
|
8
|
+
/**
|
|
9
|
+
* Function that returns true if the list contains the element,
|
|
10
|
+
* false otherwise. If the first argument is a string, it is
|
|
11
|
+
* interpreted as a column reference, otherwise it is coerced
|
|
12
|
+
* to a list.
|
|
13
|
+
* @param list1
|
|
14
|
+
* @param element
|
|
15
|
+
*/
|
|
16
|
+
export declare function listContains(list1: ExprValue | ExprValue[], element: ExprValue): import("../index.js").FunctionNode;
|
|
17
|
+
/**
|
|
18
|
+
* Function that returns true if all elements of list2 exist in list1,
|
|
19
|
+
* false otherwise.
|
|
20
|
+
* @param list1
|
|
21
|
+
* @param list2
|
|
22
|
+
*/
|
|
23
|
+
export declare function listHasAll(list1: ExprValue | ExprValue[], list2: ExprValue | ExprValue[]): import("../index.js").FunctionNode;
|
|
24
|
+
/**
|
|
25
|
+
* Function that returns true if any elements exist in both lists,
|
|
26
|
+
* false otherwise.
|
|
27
|
+
* @param list1
|
|
28
|
+
* @param list2
|
|
29
|
+
*/
|
|
30
|
+
export declare function listHasAny(list1: ExprValue | ExprValue[], list2: ExprValue | ExprValue[]): import("../index.js").FunctionNode;
|
|
31
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/functions/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAEvC;AAYD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,OAAO,EAAE,SAAS,sCAGnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,sCAG/B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,sCAG/B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { asLiteral, asNode } from "../util/ast.js";
|
|
2
|
+
import { argsList, fn } from "../util/function.js";
|
|
3
|
+
import { ListNode } from "../ast/list.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create a List containing the argument values.
|
|
6
|
+
* @param values
|
|
7
|
+
*/
|
|
8
|
+
export function list(values) {
|
|
9
|
+
return new ListNode(argsList(values).map(asLiteral));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convert a single value or an array of values to either a ListNode if the input
|
|
13
|
+
* is an array, or a single ExprNode if it is a single value. A single string will
|
|
14
|
+
* be interpreted as a column reference.
|
|
15
|
+
* @param values
|
|
16
|
+
*/
|
|
17
|
+
function asList(values) {
|
|
18
|
+
return Array.isArray(values) ? list(values) : asNode(values);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Function that returns true if the list contains the element,
|
|
22
|
+
* false otherwise. If the first argument is a string, it is
|
|
23
|
+
* interpreted as a column reference, otherwise it is coerced
|
|
24
|
+
* to a list.
|
|
25
|
+
* @param list1
|
|
26
|
+
* @param element
|
|
27
|
+
*/
|
|
28
|
+
export function listContains(list1, element) {
|
|
29
|
+
return fn("list_contains", asList(list1), asLiteral(element));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Function that returns true if all elements of list2 exist in list1,
|
|
33
|
+
* false otherwise.
|
|
34
|
+
* @param list1
|
|
35
|
+
* @param list2
|
|
36
|
+
*/
|
|
37
|
+
export function listHasAll(list1, list2) {
|
|
38
|
+
return fn("list_has_all", asList(list1), asList(list2));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Function that returns true if any elements exist in both lists,
|
|
42
|
+
* false otherwise.
|
|
43
|
+
* @param list1
|
|
44
|
+
* @param list2
|
|
45
|
+
*/
|
|
46
|
+
export function listHasAny(list1, list2) {
|
|
47
|
+
return fn("list_has_any", asList(list1), asList(list2));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/functions/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,MAAmB;IACtC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,MAA+B;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA8B,EAC9B,OAAkB;IAElB,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAA8B;IAE9B,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAA8B;IAE9B,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ExprValue } from "../types.js";
|
|
2
|
+
import { UnnestNode } from "../ast/unnest.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create an Unnest Node to flatten nested structures, either structs or lists.
|
|
5
|
+
* @param value
|
|
6
|
+
* @param recursive
|
|
7
|
+
* @param maxDepth
|
|
8
|
+
*/
|
|
9
|
+
export declare function unnest(value: ExprValue, recursive?: boolean, maxDepth?: number): UnnestNode;
|
|
10
|
+
//# sourceMappingURL=unnest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unnest.d.ts","sourceRoot":"","sources":["../../../src/functions/unnest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,UAAQ,EAAE,QAAQ,SAAI,cAEvE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { asNode } from "../util/ast.js";
|
|
2
|
+
import { UnnestNode } from "../ast/unnest.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create an Unnest Node to flatten nested structures, either structs or lists.
|
|
5
|
+
* @param value
|
|
6
|
+
* @param recursive
|
|
7
|
+
* @param maxDepth
|
|
8
|
+
*/
|
|
9
|
+
export function unnest(value, recursive = false, maxDepth = 0) {
|
|
10
|
+
return new UnnestNode(asNode(value), recursive, maxDepth);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=unnest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unnest.js","sourceRoot":"","sources":["../../../src/functions/unnest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC;IACtE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
|