@uwdata/mosaic-sql 0.17.0 → 0.19.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/LICENSE +47 -0
- package/README.md +0 -2
- package/dist/src/ast/aggregate.d.ts +82 -0
- package/dist/src/ast/aggregate.d.ts.map +1 -0
- package/dist/src/ast/aggregate.js +180 -0
- package/dist/src/ast/aggregate.js.map +1 -0
- package/dist/src/ast/between-op.d.ts +46 -0
- package/dist/src/ast/between-op.d.ts.map +1 -0
- package/dist/src/ast/between-op.js +60 -0
- package/dist/src/ast/between-op.js.map +1 -0
- package/dist/src/ast/binary-op.d.ts +21 -0
- package/dist/src/ast/binary-op.d.ts.map +1 -0
- package/dist/src/ast/binary-op.js +29 -0
- package/dist/src/ast/binary-op.js.map +1 -0
- package/dist/src/ast/case.d.ts +53 -0
- package/dist/src/ast/case.d.ts.map +1 -0
- package/dist/src/ast/case.js +75 -0
- package/dist/src/ast/case.js.map +1 -0
- package/dist/src/ast/cast.d.ts +18 -0
- package/dist/src/ast/cast.d.ts.map +1 -0
- package/dist/src/ast/cast.js +26 -0
- package/dist/src/ast/cast.js.map +1 -0
- package/dist/src/ast/collate.d.ts +18 -0
- package/dist/src/ast/collate.d.ts.map +1 -0
- package/dist/src/ast/collate.js +25 -0
- package/dist/src/ast/collate.js.map +1 -0
- package/dist/src/ast/column-param.d.ts +23 -0
- package/dist/src/ast/column-param.d.ts.map +1 -0
- package/dist/src/ast/column-param.js +29 -0
- package/dist/src/ast/column-param.js.map +1 -0
- package/dist/src/ast/column-ref.d.ts +40 -0
- package/dist/src/ast/column-ref.d.ts.map +1 -0
- package/dist/src/ast/column-ref.js +58 -0
- package/dist/src/ast/column-ref.js.map +1 -0
- package/dist/src/ast/fragment.d.ts +20 -0
- package/dist/src/ast/fragment.d.ts.map +1 -0
- package/dist/src/ast/fragment.js +26 -0
- package/dist/src/ast/fragment.js.map +1 -0
- package/dist/src/ast/from.d.ts +22 -0
- package/dist/src/ast/from.d.ts.map +1 -0
- package/dist/src/ast/from.js +37 -0
- package/dist/src/ast/from.js.map +1 -0
- package/dist/src/ast/function.d.ts +18 -0
- package/dist/src/ast/function.d.ts.map +1 -0
- package/dist/src/ast/function.js +26 -0
- package/dist/src/ast/function.js.map +1 -0
- package/dist/src/ast/in-op.d.ts +18 -0
- package/dist/src/ast/in-op.d.ts.map +1 -0
- package/dist/src/ast/in-op.js +25 -0
- package/dist/src/ast/in-op.js.map +1 -0
- package/dist/src/ast/interval.d.ts +18 -0
- package/dist/src/ast/interval.d.ts.map +1 -0
- package/dist/src/ast/interval.js +25 -0
- package/dist/src/ast/interval.js.map +1 -0
- package/dist/src/ast/list.d.ts +15 -0
- package/dist/src/ast/list.d.ts.map +1 -0
- package/dist/src/ast/list.js +21 -0
- package/dist/src/ast/list.js.map +1 -0
- package/dist/src/ast/literal.d.ts +16 -0
- package/dist/src/ast/literal.d.ts.map +1 -0
- package/dist/src/ast/literal.js +53 -0
- package/dist/src/ast/literal.js.map +1 -0
- package/dist/src/ast/logical-op.d.ts +32 -0
- package/dist/src/ast/logical-op.d.ts.map +1 -0
- package/dist/src/ast/logical-op.js +46 -0
- package/dist/src/ast/logical-op.js.map +1 -0
- package/dist/src/ast/node.d.ts +25 -0
- package/dist/src/ast/node.d.ts.map +1 -0
- package/dist/src/ast/node.js +36 -0
- package/dist/src/ast/node.js.map +1 -0
- package/dist/src/ast/order-by.d.ts +21 -0
- package/dist/src/ast/order-by.d.ts.map +1 -0
- package/dist/src/ast/order-by.js +36 -0
- package/dist/src/ast/order-by.js.map +1 -0
- package/dist/src/ast/param.d.ts +20 -0
- package/dist/src/ast/param.d.ts.map +1 -0
- package/dist/src/ast/param.js +28 -0
- package/dist/src/ast/param.js.map +1 -0
- package/dist/src/ast/query.d.ts +334 -0
- package/dist/src/ast/query.d.ts.map +1 -0
- package/dist/src/ast/query.js +640 -0
- package/dist/src/ast/query.js.map +1 -0
- package/dist/src/ast/sample.d.ts +27 -0
- package/dist/src/ast/sample.d.ts.map +1 -0
- package/dist/src/ast/sample.js +38 -0
- package/dist/src/ast/sample.js.map +1 -0
- package/dist/src/ast/select.d.ts +19 -0
- package/dist/src/ast/select.d.ts.map +1 -0
- package/dist/src/ast/select.js +35 -0
- package/dist/src/ast/select.js.map +1 -0
- package/dist/src/ast/subquery.d.ts +16 -0
- package/dist/src/ast/subquery.d.ts.map +1 -0
- package/dist/src/ast/subquery.js +21 -0
- package/dist/src/ast/subquery.js.map +1 -0
- package/dist/src/ast/table-ref.d.ts +24 -0
- package/dist/src/ast/table-ref.d.ts.map +1 -0
- package/dist/src/ast/table-ref.js +35 -0
- package/dist/src/ast/table-ref.js.map +1 -0
- package/dist/src/ast/unary-op.d.ts +40 -0
- package/dist/src/ast/unary-op.d.ts.map +1 -0
- package/dist/src/ast/unary-op.js +52 -0
- package/dist/src/ast/unary-op.js.map +1 -0
- package/dist/src/ast/unnest.d.ts +19 -0
- package/dist/src/ast/unnest.d.ts.map +1 -0
- package/dist/src/ast/unnest.js +29 -0
- package/dist/src/ast/unnest.js.map +1 -0
- package/dist/src/ast/verbatim.d.ts +18 -0
- package/dist/src/ast/verbatim.d.ts.map +1 -0
- package/dist/src/ast/verbatim.js +25 -0
- package/dist/src/ast/verbatim.js.map +1 -0
- package/dist/src/ast/window-frame.d.ts +54 -0
- package/dist/src/ast/window-frame.d.ts.map +1 -0
- package/dist/src/ast/window-frame.js +79 -0
- package/dist/src/ast/window-frame.js.map +1 -0
- package/dist/src/ast/window.d.ts +128 -0
- package/dist/src/ast/window.d.ts.map +1 -0
- package/dist/src/ast/window.js +194 -0
- package/dist/src/ast/window.js.map +1 -0
- package/dist/src/ast/with.d.ts +25 -0
- package/dist/src/ast/with.d.ts.map +1 -0
- package/dist/src/ast/with.js +36 -0
- package/dist/src/ast/with.js.map +1 -0
- package/dist/src/constants.d.ts +40 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +40 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/functions/aggregate.d.ts +236 -0
- package/dist/src/functions/aggregate.d.ts.map +1 -0
- package/dist/src/functions/aggregate.js +308 -0
- package/dist/src/functions/aggregate.js.map +1 -0
- package/dist/src/functions/case.d.ts +13 -0
- package/dist/src/functions/case.d.ts.map +1 -0
- package/dist/src/functions/case.js +17 -0
- package/dist/src/functions/case.js.map +1 -0
- package/dist/src/functions/cast.d.ts +23 -0
- package/dist/src/functions/cast.d.ts.map +1 -0
- package/dist/src/functions/cast.js +32 -0
- package/dist/src/functions/cast.js.map +1 -0
- package/dist/src/functions/collate.d.ts +10 -0
- package/dist/src/functions/collate.d.ts.map +1 -0
- package/dist/src/functions/collate.js +12 -0
- package/dist/src/functions/collate.js.map +1 -0
- package/dist/src/functions/column.d.ts +10 -0
- package/dist/src/functions/column.d.ts.map +1 -0
- package/dist/src/functions/column.js +17 -0
- package/dist/src/functions/column.js.map +1 -0
- package/dist/src/functions/cte.d.ts +13 -0
- package/dist/src/functions/cte.d.ts.map +1 -0
- package/dist/src/functions/cte.js +14 -0
- package/dist/src/functions/cte.js.map +1 -0
- package/dist/src/functions/datetime.d.ts +32 -0
- package/dist/src/functions/datetime.d.ts.map +1 -0
- package/dist/src/functions/datetime.js +45 -0
- package/dist/src/functions/datetime.js.map +1 -0
- package/dist/src/functions/interval.d.ts +48 -0
- package/dist/src/functions/interval.d.ts.map +1 -0
- package/dist/src/functions/interval.js +66 -0
- package/dist/src/functions/interval.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/literal.d.ts +16 -0
- package/dist/src/functions/literal.d.ts.map +1 -0
- package/dist/src/functions/literal.js +20 -0
- package/dist/src/functions/literal.js.map +1 -0
- package/dist/src/functions/numeric.d.ts +80 -0
- package/dist/src/functions/numeric.d.ts.map +1 -0
- package/dist/src/functions/numeric.js +110 -0
- package/dist/src/functions/numeric.js.map +1 -0
- package/dist/src/functions/operators.d.ts +169 -0
- package/dist/src/functions/operators.d.ts.map +1 -0
- package/dist/src/functions/operators.js +235 -0
- package/dist/src/functions/operators.js.map +1 -0
- package/dist/src/functions/order-by.d.ts +15 -0
- package/dist/src/functions/order-by.d.ts.map +1 -0
- package/dist/src/functions/order-by.js +19 -0
- package/dist/src/functions/order-by.js.map +1 -0
- package/dist/src/functions/spatial.d.ts +32 -0
- package/dist/src/functions/spatial.d.ts.map +1 -0
- package/dist/src/functions/spatial.js +44 -0
- package/dist/src/functions/spatial.js.map +1 -0
- package/dist/src/functions/sql-template-tag.d.ts +13 -0
- package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
- package/dist/src/functions/sql-template-tag.js +44 -0
- package/dist/src/functions/sql-template-tag.js.map +1 -0
- package/dist/src/functions/string.d.ts +49 -0
- package/dist/src/functions/string.d.ts.map +1 -0
- package/dist/src/functions/string.js +67 -0
- package/dist/src/functions/string.js.map +1 -0
- package/dist/src/functions/table-ref.d.ts +10 -0
- package/dist/src/functions/table-ref.d.ts.map +1 -0
- package/dist/src/functions/table-ref.js +13 -0
- package/dist/src/functions/table-ref.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/functions/util.d.ts +7 -0
- package/dist/src/functions/util.d.ts.map +1 -0
- package/dist/src/functions/util.js +9 -0
- package/dist/src/functions/util.js.map +1 -0
- package/dist/src/functions/window-frame.d.ts +41 -0
- package/dist/src/functions/window-frame.d.ts.map +1 -0
- package/dist/src/functions/window-frame.js +52 -0
- package/dist/src/functions/window-frame.js.map +1 -0
- package/dist/src/functions/window.d.ts +74 -0
- package/dist/src/functions/window.d.ts.map +1 -0
- package/dist/src/functions/window.js +96 -0
- package/dist/src/functions/window.js.map +1 -0
- package/dist/src/index.d.ts +73 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{src → dist/src}/index.js +8 -8
- package/dist/src/index.js.map +1 -0
- package/dist/src/load/create.d.ts +10 -0
- package/dist/src/load/create.d.ts.map +1 -0
- package/dist/src/load/create.js +14 -0
- package/dist/src/load/create.js.map +1 -0
- package/dist/src/load/extension.d.ts +2 -0
- package/dist/src/load/extension.d.ts.map +1 -0
- package/dist/src/load/extension.js +4 -0
- package/dist/src/load/extension.js.map +1 -0
- package/dist/src/load/load.d.ts +18 -0
- package/dist/src/load/load.d.ts.map +1 -0
- package/dist/src/load/load.js +80 -0
- package/dist/src/load/load.js.map +1 -0
- package/dist/src/load/sql-from.d.ts +14 -0
- package/dist/src/load/sql-from.d.ts.map +1 -0
- package/dist/src/load/sql-from.js +29 -0
- package/dist/src/load/sql-from.js.map +1 -0
- package/dist/src/transforms/bin-1d.d.ts +16 -0
- package/dist/src/transforms/bin-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-1d.js +21 -0
- package/dist/src/transforms/bin-1d.js.map +1 -0
- package/dist/src/transforms/bin-2d.d.ts +19 -0
- package/dist/src/transforms/bin-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-2d.js +27 -0
- package/dist/src/transforms/bin-2d.js.map +1 -0
- package/dist/src/transforms/bin-date.d.ts +31 -0
- package/dist/src/transforms/bin-date.d.ts.map +1 -0
- package/dist/src/transforms/bin-date.js +20 -0
- package/dist/src/transforms/bin-date.js.map +1 -0
- package/dist/src/transforms/bin-histogram.d.ts +37 -0
- package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
- package/dist/src/transforms/bin-histogram.js +32 -0
- package/dist/src/transforms/bin-histogram.js.map +1 -0
- package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
- package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-1d.js +25 -0
- package/dist/src/transforms/bin-linear-1d.js.map +1 -0
- package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
- package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-2d.js +49 -0
- package/dist/src/transforms/bin-linear-2d.js.map +1 -0
- package/dist/src/transforms/filter-query.d.ts +12 -0
- package/dist/src/transforms/filter-query.d.ts.map +1 -0
- package/dist/src/transforms/filter-query.js +39 -0
- package/dist/src/transforms/filter-query.js.map +1 -0
- package/dist/src/transforms/line-density.d.ts +24 -0
- package/dist/src/transforms/line-density.d.ts.map +1 -0
- package/dist/src/transforms/line-density.js +98 -0
- package/dist/src/transforms/line-density.js.map +1 -0
- package/dist/src/transforms/m4.d.ts +19 -0
- package/dist/src/transforms/m4.d.ts.map +1 -0
- package/dist/src/transforms/m4.js +38 -0
- package/dist/src/transforms/m4.js.map +1 -0
- package/dist/src/transforms/scales.d.ts +30 -0
- package/dist/src/transforms/scales.d.ts.map +1 -0
- package/dist/src/transforms/scales.js +103 -0
- package/dist/src/transforms/scales.js.map +1 -0
- package/dist/src/transforms/util/bin-step.d.ts +50 -0
- package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
- package/dist/src/transforms/util/bin-step.js +53 -0
- package/dist/src/transforms/util/bin-step.js.map +1 -0
- package/dist/src/transforms/util/time-interval.d.ts +14 -0
- package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
- package/dist/src/transforms/util/time-interval.js +88 -0
- package/dist/src/transforms/util/time-interval.js.map +1 -0
- package/dist/src/types.d.ts +49 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util/ast.d.ts +62 -0
- package/dist/src/util/ast.d.ts.map +1 -0
- package/{src → dist/src}/util/ast.js +36 -41
- package/dist/src/util/ast.js.map +1 -0
- package/dist/src/util/function.d.ts +56 -0
- package/dist/src/util/function.d.ts.map +1 -0
- package/dist/src/util/function.js +73 -0
- package/dist/src/util/function.js.map +1 -0
- package/dist/src/util/identity.d.ts +6 -0
- package/dist/src/util/identity.d.ts.map +1 -0
- package/dist/src/util/identity.js +8 -0
- package/dist/src/util/identity.js.map +1 -0
- package/dist/src/util/string.d.ts +4 -0
- package/dist/src/util/string.d.ts.map +1 -0
- package/dist/src/util/string.js +14 -0
- package/dist/src/util/string.js.map +1 -0
- package/dist/src/util/type-check.d.ts +17 -0
- package/dist/src/util/type-check.d.ts.map +1 -0
- package/dist/src/util/type-check.js +28 -0
- package/dist/src/util/type-check.js.map +1 -0
- package/dist/src/visit/clone.d.ts +7 -0
- package/dist/src/visit/clone.d.ts.map +1 -0
- package/dist/src/visit/clone.js +52 -0
- package/dist/src/visit/clone.js.map +1 -0
- package/dist/src/visit/recurse.d.ts +2 -0
- package/dist/src/visit/recurse.d.ts.map +1 -0
- package/dist/src/visit/recurse.js +37 -0
- package/dist/src/visit/recurse.js.map +1 -0
- package/dist/src/visit/rewrite.d.ts +9 -0
- package/dist/src/visit/rewrite.d.ts.map +1 -0
- package/dist/src/visit/rewrite.js +39 -0
- package/dist/src/visit/rewrite.js.map +1 -0
- package/dist/src/visit/visitors.d.ts +32 -0
- package/dist/src/visit/visitors.d.ts.map +1 -0
- package/dist/src/visit/visitors.js +95 -0
- package/dist/src/visit/visitors.js.map +1 -0
- package/dist/src/visit/walk.d.ts +21 -0
- package/dist/src/visit/walk.d.ts.map +1 -0
- package/dist/src/visit/walk.js +32 -0
- package/dist/src/visit/walk.js.map +1 -0
- package/package.json +13 -7
- package/src/ast/{aggregate.js → aggregate.ts} +49 -60
- package/src/ast/{between-op.js → between-op.ts} +19 -26
- package/src/ast/binary-op.ts +31 -0
- package/src/ast/{case.js → case.ts} +29 -44
- package/src/ast/{cast.js → cast.ts} +8 -14
- package/src/ast/{collate.js → collate.ts} +8 -14
- package/src/ast/column-param.ts +34 -0
- package/src/ast/{column-ref.js → column-ref.ts} +16 -25
- package/src/ast/fragment.ts +28 -0
- package/src/ast/{from.js → from.ts} +12 -21
- package/src/ast/{function.js → function.ts} +8 -14
- package/src/ast/{in-op.js → in-op.ts} +8 -14
- package/src/ast/{interval.js → interval.ts} +8 -14
- package/src/ast/list.ts +23 -0
- package/src/ast/{literal.js → literal.ts} +6 -9
- package/src/ast/logical-op.ts +50 -0
- package/src/ast/{node.js → node.ts} +10 -13
- package/src/ast/order-by.ts +38 -0
- package/src/ast/{param.js → param.ts} +6 -12
- package/src/ast/{query.js → query.ts} +224 -204
- package/src/ast/sample.ts +47 -0
- package/src/ast/{select.js → select.ts} +10 -16
- package/src/ast/{subquery.js → subquery.ts} +9 -8
- package/src/ast/{table-ref.js → table-ref.ts} +7 -12
- package/src/ast/{unary-op.js → unary-op.ts} +16 -23
- package/src/ast/unnest.ts +31 -0
- package/src/ast/verbatim.ts +27 -0
- package/src/ast/{window-frame.js → window-frame.ts} +37 -47
- package/src/ast/window.ts +246 -0
- package/src/ast/{with.js → with.ts} +19 -20
- package/src/{constants.js → constants.ts} +2 -0
- package/src/functions/aggregate.ts +344 -0
- package/src/functions/{case.js → case.ts} +5 -8
- package/src/functions/{cast.js → cast.ts} +9 -13
- package/src/functions/{collate.js → collate.ts} +4 -7
- package/src/functions/{column.js → column.ts} +9 -10
- package/src/functions/{cte.js → cte.ts} +9 -6
- package/src/functions/{datetime.js → datetime.ts} +12 -20
- package/src/functions/interval.ts +74 -0
- package/src/functions/list.ts +63 -0
- package/src/functions/{literal.js → literal.ts} +5 -7
- package/src/functions/numeric.ts +125 -0
- package/src/functions/operators.ts +272 -0
- package/src/functions/order-by.ts +21 -0
- package/src/functions/spatial.ts +50 -0
- package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
- package/src/functions/string.ts +79 -0
- package/src/functions/{table-ref.js → table-ref.ts} +4 -4
- package/src/functions/unnest.ts +13 -0
- package/src/functions/util.ts +10 -0
- package/src/functions/window-frame.ts +58 -0
- package/src/functions/{window.js → window.ts} +18 -35
- package/src/index.ts +79 -0
- package/src/load/{create.js → create.ts} +9 -3
- package/src/load/extension.ts +3 -0
- package/src/load/{load.js → load.ts} +25 -10
- package/src/load/{sql-from.js → sql-from.ts} +14 -7
- package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
- package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
- package/src/transforms/bin-date.ts +48 -0
- package/src/transforms/bin-histogram.ts +61 -0
- package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
- package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
- package/src/transforms/{filter-query.js → filter-query.ts} +10 -14
- package/src/transforms/{line-density.js → line-density.ts} +19 -17
- package/src/transforms/{m4.js → m4.ts} +17 -14
- package/src/transforms/{scales.js → scales.ts} +57 -14
- package/src/transforms/util/bin-step.ts +100 -0
- package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
- package/src/types.ts +5 -39
- package/src/util/ast.ts +104 -0
- package/src/util/{function.js → function.ts} +40 -31
- package/src/util/identity.ts +7 -0
- package/src/util/{string.js → string.ts} +4 -4
- package/src/util/type-check.ts +31 -0
- package/src/visit/{clone.js → clone.ts} +10 -10
- package/src/visit/{recurse.js → recurse.ts} +3 -1
- package/src/visit/{rewrite.js → rewrite.ts} +7 -7
- package/src/visit/{visitors.js → visitors.ts} +22 -30
- package/src/visit/walk.ts +46 -0
- package/src/ast/binary-op.js +0 -40
- package/src/ast/column-param.js +0 -40
- package/src/ast/fragment.js +0 -26
- package/src/ast/logical-op.js +0 -67
- package/src/ast/order-by.js +0 -48
- package/src/ast/sample.js +0 -53
- package/src/ast/verbatim.js +0 -33
- package/src/ast/window.js +0 -260
- package/src/functions/aggregate.js +0 -347
- package/src/functions/interval.js +0 -83
- package/src/functions/numeric.js +0 -143
- package/src/functions/operators.js +0 -301
- package/src/functions/order-by.js +0 -27
- package/src/functions/spatial.js +0 -59
- package/src/functions/string.js +0 -85
- package/src/functions/util.js +0 -14
- package/src/functions/window-frame.js +0 -61
- package/src/index-types.ts +0 -2
- package/src/load/extension.js +0 -3
- package/src/transforms/bin-date.js +0 -38
- package/src/transforms/bin-histogram.js +0 -52
- package/src/transforms/util/bin-step.js +0 -79
- package/src/util/type-check.js +0 -33
- package/src/visit/walk.js +0 -34
- package/tsconfig.json +0 -8
- package/vitest.config.ts +0 -3
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { LITERAL } from '../constants.js';
|
|
2
|
+
import { ExprNode } from './node.js';
|
|
3
|
+
export class LiteralNode extends ExprNode {
|
|
4
|
+
/** The literal value. */
|
|
5
|
+
value;
|
|
6
|
+
/**
|
|
7
|
+
* Instantiate an literal node.
|
|
8
|
+
* @param value The literal value.
|
|
9
|
+
*/
|
|
10
|
+
constructor(value) {
|
|
11
|
+
super(LITERAL);
|
|
12
|
+
this.value = value;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate a SQL query string for this node.
|
|
16
|
+
*/
|
|
17
|
+
toString() {
|
|
18
|
+
return literalToSQL(this.value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function literalToSQL(value) {
|
|
22
|
+
switch (typeof value) {
|
|
23
|
+
case 'number':
|
|
24
|
+
return Number.isFinite(value) ? `${value}` : 'NULL';
|
|
25
|
+
case 'string':
|
|
26
|
+
return `'${value.replaceAll(`'`, `''`)}'`;
|
|
27
|
+
case 'boolean':
|
|
28
|
+
return value ? 'TRUE' : 'FALSE';
|
|
29
|
+
default:
|
|
30
|
+
if (value == null) {
|
|
31
|
+
return 'NULL';
|
|
32
|
+
}
|
|
33
|
+
else if (value instanceof Date) {
|
|
34
|
+
const ts = +value;
|
|
35
|
+
if (Number.isNaN(ts))
|
|
36
|
+
return 'NULL';
|
|
37
|
+
const y = value.getUTCFullYear();
|
|
38
|
+
const m = value.getUTCMonth();
|
|
39
|
+
const d = value.getUTCDate();
|
|
40
|
+
return ts === Date.UTC(y, m, d)
|
|
41
|
+
? `DATE '${y}-${m + 1}-${d}'` // utc date
|
|
42
|
+
: `epoch_ms(${ts})`; // timestamp
|
|
43
|
+
}
|
|
44
|
+
else if (value instanceof RegExp) {
|
|
45
|
+
return `'${value.source}'`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// otherwise rely on string coercion
|
|
49
|
+
return `${value}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=literal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/ast/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,yBAAyB;IAChB,KAAK,CAAU;IAExB;;;OAGG;IACH,YAAY,KAAc;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC;YACE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;gBAClB,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACpC,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;oBACvC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY;YACrC,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,OAAO,GAAG,KAAK,EAAE,CAAC;YACpB,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ExprNode } from './node.js';
|
|
2
|
+
export declare class LogicalOpNode<T extends ExprNode> extends ExprNode {
|
|
3
|
+
/** The logical operator */
|
|
4
|
+
readonly op: string;
|
|
5
|
+
/** The clause expressions. */
|
|
6
|
+
readonly clauses: T[];
|
|
7
|
+
/**
|
|
8
|
+
* Instantiate a logical operator node.
|
|
9
|
+
* @param op The logical operation.
|
|
10
|
+
* @param clauses The input clause expressions.
|
|
11
|
+
*/
|
|
12
|
+
constructor(op: string, clauses: T[]);
|
|
13
|
+
/**
|
|
14
|
+
* Generate a SQL query string for this node.
|
|
15
|
+
*/
|
|
16
|
+
toString(): string;
|
|
17
|
+
}
|
|
18
|
+
export declare class AndNode<T extends ExprNode> extends LogicalOpNode<T> {
|
|
19
|
+
/**
|
|
20
|
+
* Instantiate a logical AND operator node.
|
|
21
|
+
* @param clauses The input clause expressions.
|
|
22
|
+
*/
|
|
23
|
+
constructor(clauses: T[]);
|
|
24
|
+
}
|
|
25
|
+
export declare class OrNode<T extends ExprNode> extends LogicalOpNode<T> {
|
|
26
|
+
/**
|
|
27
|
+
* Instantiate a logical OR operator node.
|
|
28
|
+
* @param clauses The input clause expressions.
|
|
29
|
+
*/
|
|
30
|
+
constructor(clauses: T[]);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=logical-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical-op.d.ts","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAC7D,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEtB;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;IAMpC;;OAEG;IACH,QAAQ;CAMT;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC/D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC9D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { LOGICAL_OPERATOR } from '../constants.js';
|
|
2
|
+
import { ExprNode } from './node.js';
|
|
3
|
+
export class LogicalOpNode extends ExprNode {
|
|
4
|
+
/** The logical operator */
|
|
5
|
+
op;
|
|
6
|
+
/** The clause expressions. */
|
|
7
|
+
clauses;
|
|
8
|
+
/**
|
|
9
|
+
* Instantiate a logical operator node.
|
|
10
|
+
* @param op The logical operation.
|
|
11
|
+
* @param clauses The input clause expressions.
|
|
12
|
+
*/
|
|
13
|
+
constructor(op, clauses) {
|
|
14
|
+
super(LOGICAL_OPERATOR);
|
|
15
|
+
this.op = op;
|
|
16
|
+
this.clauses = clauses;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate a SQL query string for this node.
|
|
20
|
+
*/
|
|
21
|
+
toString() {
|
|
22
|
+
const c = this.clauses;
|
|
23
|
+
return c.length === 0 ? ''
|
|
24
|
+
: c.length === 1 ? `${c[0]}`
|
|
25
|
+
: `(${c.join(` ${this.op} `)})`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class AndNode extends LogicalOpNode {
|
|
29
|
+
/**
|
|
30
|
+
* Instantiate a logical AND operator node.
|
|
31
|
+
* @param clauses The input clause expressions.
|
|
32
|
+
*/
|
|
33
|
+
constructor(clauses) {
|
|
34
|
+
super('AND', clauses);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class OrNode extends LogicalOpNode {
|
|
38
|
+
/**
|
|
39
|
+
* Instantiate a logical OR operator node.
|
|
40
|
+
* @param clauses The input clause expressions.
|
|
41
|
+
*/
|
|
42
|
+
constructor(clauses) {
|
|
43
|
+
super('OR', clauses);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=logical-op.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical-op.js","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,aAAkC,SAAQ,QAAQ;IAC7D,2BAA2B;IAClB,EAAE,CAAS;IACpB,8BAA8B;IACrB,OAAO,CAAM;IAEtB;;;;OAIG;IACH,YAAY,EAAU,EAAE,OAAY;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,OAA4B,SAAQ,aAAgB;IAC/D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,OAAO,MAA2B,SAAQ,aAAgB;IAC9D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a value is a SQL AST node.
|
|
3
|
+
* @param value The value to check.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isNode(value: unknown): value is SQLNode;
|
|
6
|
+
export declare class SQLNode {
|
|
7
|
+
/** The SQL AST node type. */
|
|
8
|
+
readonly type: string;
|
|
9
|
+
/**
|
|
10
|
+
* Instantiate a SQL AST node.
|
|
11
|
+
* @param type The SQL AST node type.
|
|
12
|
+
*/
|
|
13
|
+
constructor(type: string);
|
|
14
|
+
/**
|
|
15
|
+
* Create a shallow clone of this SQL AST node.
|
|
16
|
+
* @returns The shallow clone node.
|
|
17
|
+
*/
|
|
18
|
+
clone(): this;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* AST node corresponding to an individual expression.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ExprNode extends SQLNode {
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAEvD;AAED,qBAAa,OAAO;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAIxB;;;OAGG;IACH,KAAK,IAAI,IAAI;CAQd;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;CACpC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a value is a SQL AST node.
|
|
3
|
+
* @param value The value to check.
|
|
4
|
+
*/
|
|
5
|
+
export function isNode(value) {
|
|
6
|
+
return value instanceof SQLNode;
|
|
7
|
+
}
|
|
8
|
+
export class SQLNode {
|
|
9
|
+
/** The SQL AST node type. */
|
|
10
|
+
type;
|
|
11
|
+
/**
|
|
12
|
+
* Instantiate a SQL AST node.
|
|
13
|
+
* @param type The SQL AST node type.
|
|
14
|
+
*/
|
|
15
|
+
constructor(type) {
|
|
16
|
+
this.type = type;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a shallow clone of this SQL AST node.
|
|
20
|
+
* @returns The shallow clone node.
|
|
21
|
+
*/
|
|
22
|
+
clone() {
|
|
23
|
+
// @ts-expect-error use constructor
|
|
24
|
+
const clone = new this.constructor();
|
|
25
|
+
for (const key in this) {
|
|
26
|
+
clone[key] = this[key];
|
|
27
|
+
}
|
|
28
|
+
return clone;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* AST node corresponding to an individual expression.
|
|
33
|
+
*/
|
|
34
|
+
export class ExprNode extends SQLNode {
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,OAAO;IAClB,6BAA6B;IACpB,IAAI,CAAS;IAEtB;;;OAGG;IACH,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;CACpC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ExprNode } from './node.js';
|
|
2
|
+
export declare class OrderByNode extends ExprNode {
|
|
3
|
+
/** The expression to order by. */
|
|
4
|
+
readonly expr: ExprNode;
|
|
5
|
+
/** Flag indicating descending order. */
|
|
6
|
+
readonly desc?: boolean;
|
|
7
|
+
/** Flag indicating if null values should be sorted first. */
|
|
8
|
+
readonly nullsFirst?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Instantiate an order by entry node.
|
|
11
|
+
* @param expr The expression to order by.
|
|
12
|
+
* @param desc Flag indicating descending order.
|
|
13
|
+
* @param nullsFirst Flag indicating if null values should be sorted first.
|
|
14
|
+
*/
|
|
15
|
+
constructor(expr: ExprNode, desc?: boolean, nullsFirst?: boolean);
|
|
16
|
+
/**
|
|
17
|
+
* Generate a SQL query string for this node.
|
|
18
|
+
*/
|
|
19
|
+
toString(): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=order-by.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-by.d.ts","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;gBACS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO;IAOhE;;OAEG;IACH,QAAQ;CAUT"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ORDER_BY } from '../constants.js';
|
|
2
|
+
import { ExprNode } from './node.js';
|
|
3
|
+
export class OrderByNode extends ExprNode {
|
|
4
|
+
/** The expression to order by. */
|
|
5
|
+
expr;
|
|
6
|
+
/** Flag indicating descending order. */
|
|
7
|
+
desc;
|
|
8
|
+
/** Flag indicating if null values should be sorted first. */
|
|
9
|
+
nullsFirst;
|
|
10
|
+
/**
|
|
11
|
+
* Instantiate an order by entry node.
|
|
12
|
+
* @param expr The expression to order by.
|
|
13
|
+
* @param desc Flag indicating descending order.
|
|
14
|
+
* @param nullsFirst Flag indicating if null values should be sorted first.
|
|
15
|
+
*/
|
|
16
|
+
constructor(expr, desc, nullsFirst) {
|
|
17
|
+
super(ORDER_BY);
|
|
18
|
+
this.expr = expr;
|
|
19
|
+
this.desc = desc;
|
|
20
|
+
this.nullsFirst = nullsFirst;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate a SQL query string for this node.
|
|
24
|
+
*/
|
|
25
|
+
toString() {
|
|
26
|
+
const { expr, desc, nullsFirst } = this;
|
|
27
|
+
const dir = desc ? ' DESC'
|
|
28
|
+
: desc === false ? ' ASC'
|
|
29
|
+
: '';
|
|
30
|
+
const nf = nullsFirst ? ' NULLS FIRST'
|
|
31
|
+
: nullsFirst === false ? ' NULLS LAST'
|
|
32
|
+
: '';
|
|
33
|
+
return `${expr}${dir}${nf}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=order-by.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-by.js","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IACzB,IAAI,CAAW;IACxB,wCAAwC;IAC/B,IAAI,CAAW;IACxB,6DAA6D;IACpD,UAAU,CAAW;IAE9B;;;;;OAKG;IACH,YAAY,IAAc,EAAE,IAAc,EAAE,UAAoB;QAC9D,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO;YACxB,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM;gBACzB,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc;YACpC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa;gBACtC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ParamLike } from '../types.js';
|
|
2
|
+
import { ExprNode } from './node.js';
|
|
3
|
+
export declare class ParamNode extends ExprNode {
|
|
4
|
+
/** The dynamic parameter. */
|
|
5
|
+
readonly param: ParamLike;
|
|
6
|
+
/**
|
|
7
|
+
* Instantiate a param node with a dynamic parameter.
|
|
8
|
+
* @param param The dynamic parameter.
|
|
9
|
+
*/
|
|
10
|
+
constructor(param: ParamLike);
|
|
11
|
+
/**
|
|
12
|
+
* Returns the current parameter value.
|
|
13
|
+
*/
|
|
14
|
+
get value(): unknown;
|
|
15
|
+
/**
|
|
16
|
+
* Generate a SQL query string for this node.
|
|
17
|
+
*/
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=param.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B;;;OAGG;gBACS,KAAK,EAAE,SAAS;IAK5B;;OAEG;IACH,IAAI,KAAK,YAER;IAED;;OAEG;IACH,QAAQ;CAGT"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PARAM } from '../constants.js';
|
|
2
|
+
import { literalToSQL } from './literal.js';
|
|
3
|
+
import { ExprNode } from './node.js';
|
|
4
|
+
export class ParamNode extends ExprNode {
|
|
5
|
+
/** The dynamic parameter. */
|
|
6
|
+
param;
|
|
7
|
+
/**
|
|
8
|
+
* Instantiate a param node with a dynamic parameter.
|
|
9
|
+
* @param param The dynamic parameter.
|
|
10
|
+
*/
|
|
11
|
+
constructor(param) {
|
|
12
|
+
super(PARAM);
|
|
13
|
+
this.param = param;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns the current parameter value.
|
|
17
|
+
*/
|
|
18
|
+
get value() {
|
|
19
|
+
return this.param.value;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generate a SQL query string for this node.
|
|
23
|
+
*/
|
|
24
|
+
toString() {
|
|
25
|
+
return literalToSQL(this.value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param.js","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IACpB,KAAK,CAAY;IAE1B;;;OAGG;IACH,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import type { FilterExpr, FromExpr, GroupByExpr, MaybeArray, OrderByExpr, SelectExpr, WithExpr } from '../types.js';
|
|
2
|
+
import type { SampleMethod } from './sample.js';
|
|
3
|
+
import { FromClauseNode } from './from.js';
|
|
4
|
+
import { ExprNode, SQLNode } from './node.js';
|
|
5
|
+
import { SampleClauseNode } from './sample.js';
|
|
6
|
+
import { SelectClauseNode } from './select.js';
|
|
7
|
+
import { WindowClauseNode, type WindowDefNode } from './window.js';
|
|
8
|
+
import { WithClauseNode } from './with.js';
|
|
9
|
+
/**
|
|
10
|
+
* Check if a value is a selection query or set operation.
|
|
11
|
+
* @param value The value to check.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isQuery(value: unknown): value is Query;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is a selection query.
|
|
16
|
+
* @param value The value to check.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isSelectQuery(value: unknown): value is SelectQuery;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a value is a describe query.
|
|
21
|
+
* @param value The value to check.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isDescribeQuery(value: unknown): value is DescribeQuery;
|
|
24
|
+
export declare class Query extends ExprNode {
|
|
25
|
+
/**
|
|
26
|
+
* Create a new WITH clause with the given CTE queries.
|
|
27
|
+
* @param expr The WITH CTE queries.
|
|
28
|
+
*/
|
|
29
|
+
static with(...expr: WithExpr[]): WithClause;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new select query with the given SELECT expressions.
|
|
32
|
+
* @param expr The SELECT expressions.
|
|
33
|
+
*/
|
|
34
|
+
static select(...expr: SelectExpr[]): SelectQuery;
|
|
35
|
+
/**
|
|
36
|
+
* Create a new select query with the given FROM expressions.
|
|
37
|
+
* @param expr The FROM expressions.
|
|
38
|
+
*/
|
|
39
|
+
static from(...expr: FromExpr[]): SelectQuery;
|
|
40
|
+
/**
|
|
41
|
+
* Create a new UNION set operation over the given queries.
|
|
42
|
+
* @param queries The queries.
|
|
43
|
+
*/
|
|
44
|
+
static union(...queries: MaybeArray<Query>[]): SetOperation;
|
|
45
|
+
/**
|
|
46
|
+
* Create a new UNION BY NAME set operation over the given queries.
|
|
47
|
+
* @param queries The queries.
|
|
48
|
+
*/
|
|
49
|
+
static unionByName(...queries: MaybeArray<Query>[]): SetOperation;
|
|
50
|
+
/**
|
|
51
|
+
* Create a new UNION ALL set operation over the given queries.
|
|
52
|
+
* @param queries The queries.
|
|
53
|
+
*/
|
|
54
|
+
static unionAll(...queries: MaybeArray<Query>[]): SetOperation;
|
|
55
|
+
/**
|
|
56
|
+
* Create a new UNION ALL BY NAME set operation over the given queries.
|
|
57
|
+
* @param queries The queries.
|
|
58
|
+
*/
|
|
59
|
+
static unionAllByName(...queries: MaybeArray<Query>[]): SetOperation;
|
|
60
|
+
/**
|
|
61
|
+
* Create a new INTERSECT set operation over the given queries.
|
|
62
|
+
* @param queries The queries.
|
|
63
|
+
*/
|
|
64
|
+
static intersect(...queries: MaybeArray<Query>[]): SetOperation;
|
|
65
|
+
/**
|
|
66
|
+
* Create a new INTERSECT ALL set operation over the given queries.
|
|
67
|
+
* @param queries The queries.
|
|
68
|
+
*/
|
|
69
|
+
static intersectAll(...queries: MaybeArray<Query>[]): SetOperation;
|
|
70
|
+
/**
|
|
71
|
+
* Create a new EXCEPT set operation over the given queries.
|
|
72
|
+
* @param queries The queries.
|
|
73
|
+
*/
|
|
74
|
+
static except(...queries: MaybeArray<Query>[]): SetOperation;
|
|
75
|
+
/**
|
|
76
|
+
* Create a new EXCEPT ALL set operation over the given queries.
|
|
77
|
+
* @param queries The queries.
|
|
78
|
+
*/
|
|
79
|
+
static exceptAll(...queries: MaybeArray<Query>[]): SetOperation;
|
|
80
|
+
/**
|
|
81
|
+
* Create a new describe query for the given input query.
|
|
82
|
+
* @param query The query to describe.
|
|
83
|
+
*/
|
|
84
|
+
static describe(query: Query): DescribeQuery;
|
|
85
|
+
_with: WithClauseNode[];
|
|
86
|
+
_orderby: ExprNode[];
|
|
87
|
+
_limitPerc: boolean;
|
|
88
|
+
_limit?: ExprNode;
|
|
89
|
+
_offset?: ExprNode;
|
|
90
|
+
cteFor?: Query | null;
|
|
91
|
+
/**
|
|
92
|
+
* Instantiate a new query.
|
|
93
|
+
*/
|
|
94
|
+
constructor(type: string);
|
|
95
|
+
/**
|
|
96
|
+
* Return a list of subqueries.
|
|
97
|
+
*/
|
|
98
|
+
get subqueries(): Query[];
|
|
99
|
+
/**
|
|
100
|
+
* Clone this query.
|
|
101
|
+
*/
|
|
102
|
+
clone(): this;
|
|
103
|
+
/**
|
|
104
|
+
* Add a pointer to the query for which this query is a CTE.
|
|
105
|
+
* @param query The query for which this query is a CTE.
|
|
106
|
+
*/
|
|
107
|
+
setCteFor(query: Query | null): void;
|
|
108
|
+
/**
|
|
109
|
+
* Add WITH common table expressions (CTEs).
|
|
110
|
+
* @param expr Expressions to add.
|
|
111
|
+
*/
|
|
112
|
+
with(...expr: WithExpr[]): this;
|
|
113
|
+
/**
|
|
114
|
+
* Add ORDER BY expressions.
|
|
115
|
+
* @param expr Expressions to add.
|
|
116
|
+
*/
|
|
117
|
+
orderby(...expr: OrderByExpr[]): this;
|
|
118
|
+
/**
|
|
119
|
+
* Set the query result LIMIT as a percentage value.
|
|
120
|
+
* @param value The limit percentage value.
|
|
121
|
+
*/
|
|
122
|
+
limitPercent(value: number | ExprNode): this;
|
|
123
|
+
/**
|
|
124
|
+
* Set the query result LIMIT.
|
|
125
|
+
* @param value The limit value.
|
|
126
|
+
*/
|
|
127
|
+
limit(value: number | ExprNode): this;
|
|
128
|
+
/**
|
|
129
|
+
* Set the query result OFFSET.
|
|
130
|
+
* @param value The offset value.
|
|
131
|
+
*/
|
|
132
|
+
offset(value: number | ExprNode): this;
|
|
133
|
+
}
|
|
134
|
+
export declare class SelectQuery extends Query {
|
|
135
|
+
_select: SelectClauseNode[];
|
|
136
|
+
_from: FromClauseNode[];
|
|
137
|
+
_where: ExprNode[];
|
|
138
|
+
_sample?: SampleClauseNode;
|
|
139
|
+
_groupby: ExprNode[];
|
|
140
|
+
_having: ExprNode[];
|
|
141
|
+
_window: WindowClauseNode[];
|
|
142
|
+
_qualify: ExprNode[];
|
|
143
|
+
_distinct: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Instantiate a new select query.
|
|
146
|
+
*/
|
|
147
|
+
constructor();
|
|
148
|
+
/**
|
|
149
|
+
* Return a list of subqueries.
|
|
150
|
+
*/
|
|
151
|
+
get subqueries(): Query[];
|
|
152
|
+
/**
|
|
153
|
+
* Clone this query.
|
|
154
|
+
*/
|
|
155
|
+
clone(): this;
|
|
156
|
+
/**
|
|
157
|
+
* Add SELECT expressions.
|
|
158
|
+
* @param expr Expressions to add.
|
|
159
|
+
*/
|
|
160
|
+
select(...expr: SelectExpr[]): this;
|
|
161
|
+
/**
|
|
162
|
+
* Set SELECT expressions, replacing any prior expressions.
|
|
163
|
+
* @param expr Expressions to add.
|
|
164
|
+
*/
|
|
165
|
+
setSelect(...expr: SelectExpr[]): this;
|
|
166
|
+
/**
|
|
167
|
+
* Indicate if this query should retrieve distinct values only.
|
|
168
|
+
* @param value The distinct flag
|
|
169
|
+
*/
|
|
170
|
+
distinct(value?: boolean): this;
|
|
171
|
+
/**
|
|
172
|
+
* Add table FROM expressions.
|
|
173
|
+
* @param expr Expressions to add.
|
|
174
|
+
*/
|
|
175
|
+
from(...expr: FromExpr[]): this;
|
|
176
|
+
/**
|
|
177
|
+
* Set FROM expressions, replacing any prior expressions.
|
|
178
|
+
* @param expr Expressions to add.
|
|
179
|
+
*/
|
|
180
|
+
setFrom(...expr: FromExpr[]): this;
|
|
181
|
+
/**
|
|
182
|
+
* Set SAMPLE settings.
|
|
183
|
+
* @param value Either a sample clause node or the sample size as either
|
|
184
|
+
* a row count or percentage.
|
|
185
|
+
* @param method The sampling method to use.
|
|
186
|
+
* @param seed The random seed.
|
|
187
|
+
*/
|
|
188
|
+
sample(value?: number | SampleClauseNode | null, method?: SampleMethod, seed?: number): this;
|
|
189
|
+
/**
|
|
190
|
+
* Add WHERE expressions.
|
|
191
|
+
* @param expr Expressions to add.
|
|
192
|
+
*/
|
|
193
|
+
where(...expr: FilterExpr[]): this;
|
|
194
|
+
/**
|
|
195
|
+
* Set WHERE expressions, replacing any prior expressions.
|
|
196
|
+
* @param expr Expressions to add.
|
|
197
|
+
*/
|
|
198
|
+
setWhere(...expr: FilterExpr[]): this;
|
|
199
|
+
/**
|
|
200
|
+
* Add GROUP BY expressions.
|
|
201
|
+
* @param expr Expressions to add.
|
|
202
|
+
*/
|
|
203
|
+
groupby(...expr: GroupByExpr[]): this;
|
|
204
|
+
/**
|
|
205
|
+
* Set GROUP BY expressions, replacing any prior expressions.
|
|
206
|
+
* @param expr Expressions to add.
|
|
207
|
+
*/
|
|
208
|
+
setGroupby(...expr: GroupByExpr[]): this;
|
|
209
|
+
/**
|
|
210
|
+
* Add HAVING expressions.
|
|
211
|
+
* @param expr Expressions to add.
|
|
212
|
+
*/
|
|
213
|
+
having(...expr: FilterExpr[]): this;
|
|
214
|
+
/**
|
|
215
|
+
* Add WINDOW definitions.
|
|
216
|
+
* @param expr Window definitions to add.
|
|
217
|
+
*/
|
|
218
|
+
window(...expr: (Record<string, WindowDefNode> | null)[]): this;
|
|
219
|
+
/**
|
|
220
|
+
* Add QUALIFY expressions.
|
|
221
|
+
* @param expr Expressions to add.
|
|
222
|
+
*/
|
|
223
|
+
qualify(...expr: FilterExpr[]): this;
|
|
224
|
+
/**
|
|
225
|
+
* Generate a SQL query string.
|
|
226
|
+
*/
|
|
227
|
+
toString(): string;
|
|
228
|
+
}
|
|
229
|
+
export declare class DescribeQuery extends SQLNode {
|
|
230
|
+
readonly query: Query;
|
|
231
|
+
/**
|
|
232
|
+
* Instantiate a describe query.
|
|
233
|
+
* @param query The query to describe.
|
|
234
|
+
*/
|
|
235
|
+
constructor(query: Query);
|
|
236
|
+
/**
|
|
237
|
+
* Clone this describe query.
|
|
238
|
+
*/
|
|
239
|
+
clone(): this;
|
|
240
|
+
/**
|
|
241
|
+
* Generate a SQL query string.
|
|
242
|
+
*/
|
|
243
|
+
toString(): string;
|
|
244
|
+
}
|
|
245
|
+
export declare class SetOperation extends Query {
|
|
246
|
+
/** The set operation to perform. */
|
|
247
|
+
readonly op: string;
|
|
248
|
+
/** The input queries to the set operation. */
|
|
249
|
+
readonly queries: Query[];
|
|
250
|
+
/**
|
|
251
|
+
* Instantiate a new set operation instance.
|
|
252
|
+
* @param op The set operation.
|
|
253
|
+
* @param queries The subqueries.
|
|
254
|
+
*/
|
|
255
|
+
constructor(op: string, queries: Query[]);
|
|
256
|
+
/**
|
|
257
|
+
* Add a pointer to the query for which this query is a CTE.
|
|
258
|
+
* @param query The query for which this query is a CTE.
|
|
259
|
+
*/
|
|
260
|
+
setCteFor(query: Query | null): void;
|
|
261
|
+
/**
|
|
262
|
+
* Return a list of subqueries.
|
|
263
|
+
*/
|
|
264
|
+
get subqueries(): Query[];
|
|
265
|
+
/**
|
|
266
|
+
* Clone this set operation.
|
|
267
|
+
*/
|
|
268
|
+
clone(): this;
|
|
269
|
+
/**
|
|
270
|
+
* Generate a SQL query string.
|
|
271
|
+
*/
|
|
272
|
+
toString(): string;
|
|
273
|
+
}
|
|
274
|
+
declare class WithClause {
|
|
275
|
+
/** The common table expressions (CTE). */
|
|
276
|
+
readonly _with: WithExpr[];
|
|
277
|
+
/**
|
|
278
|
+
* Instantiate a new WITH clause instance.
|
|
279
|
+
* @param expr The WITH CTE queries.
|
|
280
|
+
*/
|
|
281
|
+
constructor(...expr: WithExpr[]);
|
|
282
|
+
/**
|
|
283
|
+
* Create a new select query with the given SELECT expressions.
|
|
284
|
+
* @param expr The SELECT expressions.
|
|
285
|
+
*/
|
|
286
|
+
select(...expr: SelectExpr[]): SelectQuery;
|
|
287
|
+
/**
|
|
288
|
+
* Create a new select query with the given FROM expressions.
|
|
289
|
+
* @param expr The FROM expressions.
|
|
290
|
+
*/
|
|
291
|
+
from(...expr: FromExpr[]): SelectQuery;
|
|
292
|
+
/**
|
|
293
|
+
* Create a new UNION set operation over the given queries.
|
|
294
|
+
* @param queries The queries.
|
|
295
|
+
*/
|
|
296
|
+
union(...queries: Query[]): SetOperation;
|
|
297
|
+
/**
|
|
298
|
+
* Create a new UNION BY NAME set operation over the given queries.
|
|
299
|
+
* @param queries The queries.
|
|
300
|
+
*/
|
|
301
|
+
unionByName(...queries: Query[]): SetOperation;
|
|
302
|
+
/**
|
|
303
|
+
* Create a new UNION ALL set operation over the given queries.
|
|
304
|
+
* @param queries The queries.
|
|
305
|
+
*/
|
|
306
|
+
unionAll(...queries: Query[]): SetOperation;
|
|
307
|
+
/**
|
|
308
|
+
* Create a new UNION ALL BY NAME set operation over the given queries.
|
|
309
|
+
* @param queries The queries.
|
|
310
|
+
*/
|
|
311
|
+
unionAllByName(...queries: Query[]): SetOperation;
|
|
312
|
+
/**
|
|
313
|
+
* Create a new INTERSECT set operation over the given queries.
|
|
314
|
+
* @param queries The queries.
|
|
315
|
+
*/
|
|
316
|
+
intersect(...queries: Query[]): SetOperation;
|
|
317
|
+
/**
|
|
318
|
+
* Create a new INTERSECT ALL set operation over the given queries.
|
|
319
|
+
* @param queries The queries.
|
|
320
|
+
*/
|
|
321
|
+
intersectAll(...queries: Query[]): SetOperation;
|
|
322
|
+
/**
|
|
323
|
+
* Create a new EXCEPT set operation over the given queries.
|
|
324
|
+
* @param queries The queries.
|
|
325
|
+
*/
|
|
326
|
+
except(...queries: Query[]): SetOperation;
|
|
327
|
+
/**
|
|
328
|
+
* Create a new EXCEPT ALL set operation over the given queries.
|
|
329
|
+
* @param queries The queries.
|
|
330
|
+
*/
|
|
331
|
+
exceptAll(...queries: Query[]): SetOperation;
|
|
332
|
+
}
|
|
333
|
+
export {};
|
|
334
|
+
//# sourceMappingURL=query.d.ts.map
|