@malloydata/malloy 0.0.22-dev230207144036 → 0.0.22-dev230207180844

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/connection_utils.d.ts +1 -0
  2. package/dist/connection_utils.js +66 -0
  3. package/dist/dialect/dialect.d.ts +66 -0
  4. package/dist/dialect/dialect.js +85 -0
  5. package/dist/dialect/dialect_map.d.ts +3 -0
  6. package/dist/dialect/dialect_map.js +45 -0
  7. package/dist/dialect/duckdb.d.ts +52 -0
  8. package/dist/dialect/duckdb.js +364 -0
  9. package/dist/dialect/index.d.ts +6 -0
  10. package/dist/dialect/index.js +37 -0
  11. package/dist/dialect/postgres.d.ts +52 -0
  12. package/dist/dialect/postgres.js +330 -0
  13. package/dist/dialect/standardsql.d.ts +49 -0
  14. package/dist/dialect/standardsql.js +381 -0
  15. package/dist/index.d.ts +10 -0
  16. package/dist/index.js +59 -0
  17. package/dist/lang/ast/ast-utils.d.ts +10 -0
  18. package/dist/lang/ast/ast-utils.js +42 -0
  19. package/dist/lang/ast/elements/define-query.d.ts +14 -0
  20. package/dist/lang/ast/elements/define-query.js +56 -0
  21. package/dist/lang/ast/elements/define-source.d.ts +17 -0
  22. package/dist/lang/ast/elements/define-source.js +79 -0
  23. package/dist/lang/ast/elements/import-statement.d.ts +9 -0
  24. package/dist/lang/ast/elements/import-statement.js +78 -0
  25. package/dist/lang/ast/elements/pipeline-desc.d.ts +30 -0
  26. package/dist/lang/ast/elements/pipeline-desc.js +102 -0
  27. package/dist/lang/ast/elements/refined-source.d.ts +15 -0
  28. package/dist/lang/ast/elements/refined-source.js +121 -0
  29. package/dist/lang/ast/elements/source.d.ts +12 -0
  30. package/dist/lang/ast/elements/source.js +53 -0
  31. package/dist/lang/ast/error-factory.d.ts +9 -0
  32. package/dist/lang/ast/error-factory.js +61 -0
  33. package/dist/lang/ast/executors/index-executor.d.ts +18 -0
  34. package/dist/lang/ast/executors/index-executor.js +96 -0
  35. package/dist/lang/ast/executors/project-executor.d.ts +10 -0
  36. package/dist/lang/ast/executors/project-executor.js +68 -0
  37. package/dist/lang/ast/executors/reduce-executor.d.ts +21 -0
  38. package/dist/lang/ast/executors/reduce-executor.js +149 -0
  39. package/dist/lang/ast/expressions/apply.d.ts +8 -0
  40. package/dist/lang/ast/expressions/apply.js +37 -0
  41. package/dist/lang/ast/expressions/binary-boolean.d.ts +12 -0
  42. package/dist/lang/ast/expressions/binary-boolean.js +54 -0
  43. package/dist/lang/ast/expressions/binary-numeric.d.ts +11 -0
  44. package/dist/lang/ast/expressions/binary-numeric.js +42 -0
  45. package/dist/lang/ast/expressions/boolean.d.ts +8 -0
  46. package/dist/lang/ast/expressions/boolean.js +39 -0
  47. package/dist/lang/ast/expressions/constant-sub-expression.d.ts +16 -0
  48. package/dist/lang/ast/expressions/constant-sub-expression.js +98 -0
  49. package/dist/lang/ast/expressions/expr-add-sub.d.ts +4 -0
  50. package/dist/lang/ast/expressions/expr-add-sub.js +34 -0
  51. package/dist/lang/ast/expressions/expr-aggregate-function.d.ts +15 -0
  52. package/dist/lang/ast/expressions/expr-aggregate-function.js +99 -0
  53. package/dist/lang/ast/expressions/expr-alternation-tree.d.ts +11 -0
  54. package/dist/lang/ast/expressions/expr-alternation-tree.js +54 -0
  55. package/dist/lang/ast/expressions/expr-asymmetric.d.ts +10 -0
  56. package/dist/lang/ast/expressions/expr-asymmetric.js +27 -0
  57. package/dist/lang/ast/expressions/expr-avg.d.ts +6 -0
  58. package/dist/lang/ast/expressions/expr-avg.js +34 -0
  59. package/dist/lang/ast/expressions/expr-cast.d.ts +13 -0
  60. package/dist/lang/ast/expressions/expr-cast.js +29 -0
  61. package/dist/lang/ast/expressions/expr-compare.d.ts +10 -0
  62. package/dist/lang/ast/expressions/expr-compare.js +58 -0
  63. package/dist/lang/ast/expressions/expr-count-distinct.d.ts +6 -0
  64. package/dist/lang/ast/expressions/expr-count-distinct.js +35 -0
  65. package/dist/lang/ast/expressions/expr-count.d.ts +11 -0
  66. package/dist/lang/ast/expressions/expr-count.js +57 -0
  67. package/dist/lang/ast/expressions/expr-filter.d.ts +12 -0
  68. package/dist/lang/ast/expressions/expr-filter.js +69 -0
  69. package/dist/lang/ast/expressions/expr-func.d.ts +10 -0
  70. package/dist/lang/ast/expressions/expr-func.js +63 -0
  71. package/dist/lang/ast/expressions/expr-granular-time.d.ts +24 -0
  72. package/dist/lang/ast/expressions/expr-granular-time.js +117 -0
  73. package/dist/lang/ast/expressions/expr-id-reference.d.ts +12 -0
  74. package/dist/lang/ast/expressions/expr-id-reference.js +75 -0
  75. package/dist/lang/ast/expressions/expr-logical-op.d.ts +9 -0
  76. package/dist/lang/ast/expressions/expr-logical-op.js +36 -0
  77. package/dist/lang/ast/expressions/expr-max.d.ts +9 -0
  78. package/dist/lang/ast/expressions/expr-max.js +16 -0
  79. package/dist/lang/ast/expressions/expr-min.d.ts +9 -0
  80. package/dist/lang/ast/expressions/expr-min.js +16 -0
  81. package/dist/lang/ast/expressions/expr-minus.d.ts +9 -0
  82. package/dist/lang/ast/expressions/expr-minus.js +48 -0
  83. package/dist/lang/ast/expressions/expr-mul-div.d.ts +4 -0
  84. package/dist/lang/ast/expressions/expr-mul-div.js +34 -0
  85. package/dist/lang/ast/expressions/expr-not.d.ts +10 -0
  86. package/dist/lang/ast/expressions/expr-not.js +49 -0
  87. package/dist/lang/ast/expressions/expr-now.d.ts +7 -0
  88. package/dist/lang/ast/expressions/expr-now.js +46 -0
  89. package/dist/lang/ast/expressions/expr-null.d.ts +6 -0
  90. package/dist/lang/ast/expressions/expr-null.js +41 -0
  91. package/dist/lang/ast/expressions/expr-number.d.ts +10 -0
  92. package/dist/lang/ast/expressions/expr-number.js +42 -0
  93. package/dist/lang/ast/expressions/expr-parens.d.ts +10 -0
  94. package/dist/lang/ast/expressions/expr-parens.js +42 -0
  95. package/dist/lang/ast/expressions/expr-regex.d.ts +8 -0
  96. package/dist/lang/ast/expressions/expr-regex.js +42 -0
  97. package/dist/lang/ast/expressions/expr-string.d.ts +9 -0
  98. package/dist/lang/ast/expressions/expr-string.js +50 -0
  99. package/dist/lang/ast/expressions/expr-sum.d.ts +6 -0
  100. package/dist/lang/ast/expressions/expr-sum.js +12 -0
  101. package/dist/lang/ast/expressions/expr-time-extract.d.ts +13 -0
  102. package/dist/lang/ast/expressions/expr-time-extract.js +117 -0
  103. package/dist/lang/ast/expressions/expr-time.d.ts +11 -0
  104. package/dist/lang/ast/expressions/expr-time.js +62 -0
  105. package/dist/lang/ast/expressions/expr-ungroup.d.ts +14 -0
  106. package/dist/lang/ast/expressions/expr-ungroup.js +83 -0
  107. package/dist/lang/ast/expressions/for-range.d.ts +19 -0
  108. package/dist/lang/ast/expressions/for-range.js +101 -0
  109. package/dist/lang/ast/expressions/granular-literal.d.ts +20 -0
  110. package/dist/lang/ast/expressions/granular-literal.js +148 -0
  111. package/dist/lang/ast/expressions/partial-compare.d.ts +14 -0
  112. package/dist/lang/ast/expressions/partial-compare.js +50 -0
  113. package/dist/lang/ast/expressions/pick-when.d.ts +19 -0
  114. package/dist/lang/ast/expressions/pick-when.js +156 -0
  115. package/dist/lang/ast/expressions/range.d.ts +12 -0
  116. package/dist/lang/ast/expressions/range.js +80 -0
  117. package/dist/lang/ast/expressions/time-frame.d.ts +7 -0
  118. package/dist/lang/ast/expressions/time-frame.js +40 -0
  119. package/dist/lang/ast/expressions/top-by.d.ts +10 -0
  120. package/dist/lang/ast/expressions/top-by.js +51 -0
  121. package/dist/lang/ast/expressions/unary.d.ts +5 -0
  122. package/dist/lang/ast/expressions/unary.js +34 -0
  123. package/dist/lang/ast/expressions/utils.d.ts +12 -0
  124. package/dist/lang/ast/expressions/utils.js +87 -0
  125. package/dist/lang/ast/field-space/column-space-field.d.ts +9 -0
  126. package/dist/lang/ast/field-space/column-space-field.js +40 -0
  127. package/dist/lang/ast/field-space/dynamic-space.d.ts +22 -0
  128. package/dist/lang/ast/field-space/dynamic-space.js +140 -0
  129. package/dist/lang/ast/field-space/field-definition-value.d.ts +16 -0
  130. package/dist/lang/ast/field-space/field-definition-value.js +55 -0
  131. package/dist/lang/ast/field-space/index-field-space.d.ts +10 -0
  132. package/dist/lang/ast/field-space/index-field-space.js +57 -0
  133. package/dist/lang/ast/field-space/join-space-field.d.ts +8 -0
  134. package/dist/lang/ast/field-space/join-space-field.js +35 -0
  135. package/dist/lang/ast/field-space/project-field-space.d.ts +6 -0
  136. package/dist/lang/ast/field-space/project-field-space.js +51 -0
  137. package/dist/lang/ast/field-space/query-field-struct.d.ts +10 -0
  138. package/dist/lang/ast/field-space/query-field-struct.js +46 -0
  139. package/dist/lang/ast/field-space/query-space-field.d.ts +11 -0
  140. package/dist/lang/ast/field-space/query-space-field.js +37 -0
  141. package/dist/lang/ast/field-space/query-spaces.d.ts +50 -0
  142. package/dist/lang/ast/field-space/query-spaces.js +233 -0
  143. package/dist/lang/ast/field-space/reference-field.d.ts +11 -0
  144. package/dist/lang/ast/field-space/reference-field.js +45 -0
  145. package/dist/lang/ast/field-space/refined-space.d.ts +13 -0
  146. package/dist/lang/ast/field-space/refined-space.js +100 -0
  147. package/dist/lang/ast/field-space/rename-space-field.d.ts +11 -0
  148. package/dist/lang/ast/field-space/rename-space-field.js +50 -0
  149. package/dist/lang/ast/field-space/static-space.d.ts +29 -0
  150. package/dist/lang/ast/field-space/static-space.js +156 -0
  151. package/dist/lang/ast/field-space/struct-space-field-base.d.ts +11 -0
  152. package/dist/lang/ast/field-space/struct-space-field-base.js +40 -0
  153. package/dist/lang/ast/field-space/wild-space-field.d.ts +10 -0
  154. package/dist/lang/ast/field-space/wild-space-field.js +40 -0
  155. package/dist/lang/ast/fragtype-utils.d.ts +39 -0
  156. package/dist/lang/ast/fragtype-utils.js +100 -0
  157. package/dist/lang/ast/index.d.ts +90 -0
  158. package/dist/lang/ast/index.js +129 -0
  159. package/dist/lang/ast/parameters/constant-parameter.d.ts +8 -0
  160. package/dist/lang/ast/parameters/constant-parameter.js +54 -0
  161. package/dist/lang/ast/parameters/has-parameter.d.ts +19 -0
  162. package/dist/lang/ast/parameters/has-parameter.js +64 -0
  163. package/dist/lang/ast/query-elements/anonymous-query.d.ts +9 -0
  164. package/dist/lang/ast/query-elements/anonymous-query.js +41 -0
  165. package/dist/lang/ast/query-elements/existing-query.d.ts +11 -0
  166. package/dist/lang/ast/query-elements/existing-query.js +79 -0
  167. package/dist/lang/ast/query-elements/full-query.d.ts +10 -0
  168. package/dist/lang/ast/query-elements/full-query.js +85 -0
  169. package/dist/lang/ast/query-elements/query-head-struct.d.ts +9 -0
  170. package/dist/lang/ast/query-elements/query-head-struct.js +48 -0
  171. package/dist/lang/ast/query-items/field-declaration.d.ts +31 -0
  172. package/dist/lang/ast/query-items/field-declaration.js +137 -0
  173. package/dist/lang/ast/query-items/field-references.d.ts +25 -0
  174. package/dist/lang/ast/query-items/field-references.js +80 -0
  175. package/dist/lang/ast/query-properties/aggregate.d.ts +5 -0
  176. package/dist/lang/ast/query-properties/aggregate.js +39 -0
  177. package/dist/lang/ast/query-properties/declare-fields.d.ts +5 -0
  178. package/dist/lang/ast/query-properties/declare-fields.js +33 -0
  179. package/dist/lang/ast/query-properties/dimmensions.d.ts +5 -0
  180. package/dist/lang/ast/query-properties/dimmensions.js +36 -0
  181. package/dist/lang/ast/query-properties/filters.d.ts +18 -0
  182. package/dist/lang/ast/query-properties/filters.js +89 -0
  183. package/dist/lang/ast/query-properties/group-by.d.ts +5 -0
  184. package/dist/lang/ast/query-properties/group-by.js +39 -0
  185. package/dist/lang/ast/query-properties/indexing.d.ts +10 -0
  186. package/dist/lang/ast/query-properties/indexing.js +39 -0
  187. package/dist/lang/ast/query-properties/joins.d.ts +36 -0
  188. package/dist/lang/ast/query-properties/joins.js +143 -0
  189. package/dist/lang/ast/query-properties/limit.d.ts +6 -0
  190. package/dist/lang/ast/query-properties/limit.js +35 -0
  191. package/dist/lang/ast/query-properties/measures.d.ts +5 -0
  192. package/dist/lang/ast/query-properties/measures.js +36 -0
  193. package/dist/lang/ast/query-properties/nest-reference.d.ts +7 -0
  194. package/dist/lang/ast/query-properties/nest-reference.js +35 -0
  195. package/dist/lang/ast/query-properties/nest.d.ts +31 -0
  196. package/dist/lang/ast/query-properties/nest.js +133 -0
  197. package/dist/lang/ast/query-properties/nests.d.ts +5 -0
  198. package/dist/lang/ast/query-properties/nests.js +33 -0
  199. package/dist/lang/ast/query-properties/ordering.d.ts +15 -0
  200. package/dist/lang/ast/query-properties/ordering.js +66 -0
  201. package/dist/lang/ast/query-properties/project-statement.d.ts +5 -0
  202. package/dist/lang/ast/query-properties/project-statement.js +33 -0
  203. package/dist/lang/ast/query-properties/qop-desc.d.ts +17 -0
  204. package/dist/lang/ast/query-properties/qop-desc.js +124 -0
  205. package/dist/lang/ast/query-properties/sampling.d.ts +8 -0
  206. package/dist/lang/ast/query-properties/sampling.js +38 -0
  207. package/dist/lang/ast/query-properties/top.d.ts +13 -0
  208. package/dist/lang/ast/query-properties/top.js +60 -0
  209. package/dist/lang/ast/source-properties/field-list-edit.d.ts +8 -0
  210. package/dist/lang/ast/source-properties/field-list-edit.js +36 -0
  211. package/dist/lang/ast/source-properties/primary-key.d.ts +7 -0
  212. package/dist/lang/ast/source-properties/primary-key.js +35 -0
  213. package/dist/lang/ast/source-properties/renames.d.ts +11 -0
  214. package/dist/lang/ast/source-properties/renames.js +43 -0
  215. package/dist/lang/ast/source-properties/turtles.d.ts +5 -0
  216. package/dist/lang/ast/source-properties/turtles.js +33 -0
  217. package/dist/lang/ast/sources/named-source.d.ts +19 -0
  218. package/dist/lang/ast/sources/named-source.js +147 -0
  219. package/dist/lang/ast/sources/query-source.d.ts +9 -0
  220. package/dist/lang/ast/sources/query-source.js +41 -0
  221. package/dist/lang/ast/sources/sql-source.d.ts +7 -0
  222. package/dist/lang/ast/sources/sql-source.js +54 -0
  223. package/dist/lang/ast/sources/table-source.d.ts +8 -0
  224. package/dist/lang/ast/sources/table-source.js +60 -0
  225. package/dist/lang/ast/space-seed.d.ts +16 -0
  226. package/dist/lang/ast/space-seed.js +59 -0
  227. package/dist/lang/ast/sql-elements/sql-statement.d.ts +19 -0
  228. package/dist/lang/ast/sql-elements/sql-statement.js +80 -0
  229. package/dist/lang/ast/sql-elements/sql-string.d.ts +12 -0
  230. package/dist/lang/ast/sql-elements/sql-string.js +60 -0
  231. package/dist/lang/ast/struct-utils.d.ts +4 -0
  232. package/dist/lang/ast/struct-utils.js +48 -0
  233. package/dist/lang/ast/time-utils.d.ts +12 -0
  234. package/dist/lang/ast/time-utils.js +140 -0
  235. package/dist/lang/ast/types/comparison.d.ts +11 -0
  236. package/dist/lang/ast/types/comparison.js +41 -0
  237. package/dist/lang/ast/types/document-compile-result.d.ts +8 -0
  238. package/dist/lang/ast/types/document-compile-result.js +25 -0
  239. package/dist/lang/ast/types/equality.d.ts +7 -0
  240. package/dist/lang/ast/types/equality.js +37 -0
  241. package/dist/lang/ast/types/executor.d.ts +9 -0
  242. package/dist/lang/ast/types/executor.js +25 -0
  243. package/dist/lang/ast/types/explore-desc.d.ts +5 -0
  244. package/dist/lang/ast/types/explore-desc.js +33 -0
  245. package/dist/lang/ast/types/explore-field.d.ts +5 -0
  246. package/dist/lang/ast/types/explore-field.js +32 -0
  247. package/dist/lang/ast/types/expr-result.d.ts +5 -0
  248. package/dist/lang/ast/types/expr-result.js +25 -0
  249. package/dist/lang/ast/types/expr-value.d.ts +3 -0
  250. package/dist/lang/ast/types/expr-value.js +25 -0
  251. package/dist/lang/ast/types/expression-def.d.ts +69 -0
  252. package/dist/lang/ast/types/expression-def.js +346 -0
  253. package/dist/lang/ast/types/field-collection-member.d.ts +5 -0
  254. package/dist/lang/ast/types/field-collection-member.js +34 -0
  255. package/dist/lang/ast/types/field-decl.d.ts +7 -0
  256. package/dist/lang/ast/types/field-decl.js +37 -0
  257. package/dist/lang/ast/types/field-space.d.ts +24 -0
  258. package/dist/lang/ast/types/field-space.js +44 -0
  259. package/dist/lang/ast/types/granular-result.d.ts +7 -0
  260. package/dist/lang/ast/types/granular-result.js +11 -0
  261. package/dist/lang/ast/types/lookup-result.d.ts +10 -0
  262. package/dist/lang/ast/types/lookup-result.js +25 -0
  263. package/dist/lang/ast/types/malloy-element.d.ts +106 -0
  264. package/dist/lang/ast/types/malloy-element.js +398 -0
  265. package/dist/lang/ast/types/model-entry.d.ts +6 -0
  266. package/dist/lang/ast/types/model-entry.js +25 -0
  267. package/dist/lang/ast/types/name-space.d.ts +5 -0
  268. package/dist/lang/ast/types/name-space.js +25 -0
  269. package/dist/lang/ast/types/nested-query.d.ts +3 -0
  270. package/dist/lang/ast/types/nested-query.js +25 -0
  271. package/dist/lang/ast/types/op-desc.d.ts +6 -0
  272. package/dist/lang/ast/types/op-desc.js +25 -0
  273. package/dist/lang/ast/types/query-comp.d.ts +5 -0
  274. package/dist/lang/ast/types/query-comp.js +25 -0
  275. package/dist/lang/ast/types/query-element.d.ts +5 -0
  276. package/dist/lang/ast/types/query-element.js +32 -0
  277. package/dist/lang/ast/types/query-item.d.ts +5 -0
  278. package/dist/lang/ast/types/query-item.js +25 -0
  279. package/dist/lang/ast/types/query-property.d.ts +17 -0
  280. package/dist/lang/ast/types/query-property.js +55 -0
  281. package/dist/lang/ast/types/source-property.d.ts +10 -0
  282. package/dist/lang/ast/types/source-property.js +43 -0
  283. package/dist/lang/ast/types/space-entry.d.ts +5 -0
  284. package/dist/lang/ast/types/space-entry.js +29 -0
  285. package/dist/lang/ast/types/space-field.d.ts +10 -0
  286. package/dist/lang/ast/types/space-field.js +48 -0
  287. package/dist/lang/ast/types/space-param.d.ts +20 -0
  288. package/dist/lang/ast/types/space-param.js +61 -0
  289. package/dist/lang/ast/types/time-result.d.ts +6 -0
  290. package/dist/lang/ast/types/time-result.js +25 -0
  291. package/dist/lang/ast/types/turtle-headed-pipe.d.ts +7 -0
  292. package/dist/lang/ast/types/turtle-headed-pipe.js +37 -0
  293. package/dist/lang/ast/types/type-desc.d.ts +7 -0
  294. package/dist/lang/ast/types/type-desc.js +25 -0
  295. package/dist/lang/field-utils.d.ts +5 -0
  296. package/dist/lang/field-utils.js +43 -0
  297. package/dist/lang/index.d.ts +10 -0
  298. package/dist/lang/index.js +32 -0
  299. package/dist/lang/lib/Malloy/MalloyLexer.d.ts +165 -0
  300. package/dist/lang/lib/Malloy/MalloyLexer.js +1232 -0
  301. package/dist/lang/lib/Malloy/MalloyParser.d.ts +1947 -0
  302. package/dist/lang/lib/Malloy/MalloyParser.js +11909 -0
  303. package/dist/lang/lib/Malloy/MalloyParserListener.d.ts +2022 -0
  304. package/dist/lang/lib/Malloy/MalloyParserListener.js +4 -0
  305. package/dist/lang/lib/Malloy/MalloyParserVisitor.d.ts +1274 -0
  306. package/dist/lang/lib/Malloy/MalloyParserVisitor.js +4 -0
  307. package/dist/lang/malloy-to-ast.d.ts +155 -0
  308. package/dist/lang/malloy-to-ast.js +990 -0
  309. package/dist/lang/parse-error-handler.d.ts +9 -0
  310. package/dist/lang/parse-error-handler.js +44 -0
  311. package/dist/lang/parse-log.d.ts +27 -0
  312. package/dist/lang/parse-log.js +51 -0
  313. package/dist/lang/parse-malloy.d.ts +182 -0
  314. package/dist/lang/parse-malloy.js +728 -0
  315. package/dist/lang/parse-tree-walkers/document-completion-walker.d.ts +10 -0
  316. package/dist/lang/parse-tree-walkers/document-completion-walker.js +148 -0
  317. package/dist/lang/parse-tree-walkers/document-help-context-walker.d.ts +9 -0
  318. package/dist/lang/parse-tree-walkers/document-help-context-walker.js +107 -0
  319. package/dist/lang/parse-tree-walkers/document-highlight-walker.d.ts +83 -0
  320. package/dist/lang/parse-tree-walkers/document-highlight-walker.js +385 -0
  321. package/dist/lang/parse-tree-walkers/document-symbol-walker.d.ts +11 -0
  322. package/dist/lang/parse-tree-walkers/document-symbol-walker.js +182 -0
  323. package/dist/lang/parse-tree-walkers/explore-query-walker.d.ts +34 -0
  324. package/dist/lang/parse-tree-walkers/explore-query-walker.js +74 -0
  325. package/dist/lang/parse-tree-walkers/find-external-references.d.ts +11 -0
  326. package/dist/lang/parse-tree-walkers/find-external-references.js +61 -0
  327. package/dist/lang/reference-list.d.ts +10 -0
  328. package/dist/lang/reference-list.js +90 -0
  329. package/dist/lang/test/document-help-context-walker.spec.d.ts +1 -0
  330. package/dist/lang/test/document-help-context-walker.spec.js +55 -0
  331. package/dist/lang/test/document-symbol-walker.spec.d.ts +1 -0
  332. package/dist/lang/test/document-symbol-walker.spec.js +110 -0
  333. package/dist/lang/test/field-symbols.spec.d.ts +1 -0
  334. package/dist/lang/test/field-symbols.spec.js +184 -0
  335. package/dist/lang/test/parse.spec.d.ts +14 -0
  336. package/dist/lang/test/parse.spec.js +2135 -0
  337. package/dist/lang/test/test-translator.d.ts +41 -0
  338. package/dist/lang/test/test-translator.js +344 -0
  339. package/dist/lang/translate-response.d.ts +59 -0
  340. package/dist/lang/translate-response.js +30 -0
  341. package/dist/lang/zone.d.ts +57 -0
  342. package/dist/lang/zone.js +107 -0
  343. package/dist/malloy.d.ts +1146 -0
  344. package/dist/malloy.js +2413 -0
  345. package/dist/model/index.d.ts +2 -0
  346. package/dist/model/index.js +45 -0
  347. package/dist/model/malloy_query.d.ts +351 -0
  348. package/dist/model/malloy_query.js +3174 -0
  349. package/dist/model/malloy_types.d.ts +551 -0
  350. package/dist/model/malloy_types.js +378 -0
  351. package/dist/model/sql_block.d.ts +7 -0
  352. package/dist/model/sql_block.js +56 -0
  353. package/dist/model/utils.d.ts +22 -0
  354. package/dist/model/utils.js +102 -0
  355. package/dist/run_sql_options.d.ts +3 -0
  356. package/dist/run_sql_options.js +25 -0
  357. package/dist/runtime_types.d.ts +105 -0
  358. package/dist/runtime_types.js +25 -0
  359. package/package.json +2 -2
@@ -0,0 +1,9 @@
1
+ import { ModelDataRequest } from "../../translate-response";
2
+ import { DocStatement, Document, MalloyElement } from "../types/malloy-element";
3
+ export declare class ImportStatement extends MalloyElement implements DocStatement {
4
+ readonly url: string;
5
+ elementType: string;
6
+ fullURL?: string;
7
+ constructor(url: string, baseURL: string);
8
+ execute(doc: Document): ModelDataRequest;
9
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ImportStatement = void 0;
26
+ const malloy_element_1 = require("../types/malloy-element");
27
+ class ImportStatement extends malloy_element_1.MalloyElement {
28
+ /*
29
+ * At the time of writng this comment, it is guaranteed that if an AST
30
+ * node for an import statement is created, the translator has already
31
+ * succesfully fetched the URL referred to in the statement.
32
+ *
33
+ * Error checking code in here is future proofing against a day when
34
+ * there are other ways to contruct an AST.
35
+ */
36
+ constructor(url, baseURL) {
37
+ super();
38
+ this.url = url;
39
+ this.elementType = "import statement";
40
+ try {
41
+ this.fullURL = decodeURI(new URL(url, baseURL).toString());
42
+ }
43
+ catch (e) {
44
+ this.log("Invalid URI in import statement");
45
+ }
46
+ }
47
+ execute(doc) {
48
+ const trans = this.translator();
49
+ if (!trans) {
50
+ this.log("Cannot import without translation context");
51
+ }
52
+ else if (this.fullURL) {
53
+ const src = trans.root.importZone.getEntry(this.fullURL);
54
+ if (src.status === "present") {
55
+ const childNeeds = trans.childRequest(this.fullURL);
56
+ if (childNeeds) {
57
+ return childNeeds;
58
+ }
59
+ const importStructs = trans.getChildExports(this.fullURL);
60
+ for (const importing in importStructs) {
61
+ doc.setEntry(importing, {
62
+ entry: importStructs[importing],
63
+ exported: false,
64
+ });
65
+ }
66
+ }
67
+ else if (src.status === "error") {
68
+ this.log(`import failed: '${src.message}'`);
69
+ }
70
+ else {
71
+ this.log(`import failed with status: '${src.status}'`);
72
+ }
73
+ }
74
+ return undefined;
75
+ }
76
+ }
77
+ exports.ImportStatement = ImportStatement;
78
+ //# sourceMappingURL=import-statement.js.map
@@ -0,0 +1,30 @@
1
+ import { DocumentLocation, Pipeline, PipeSegment, StructDef } from "../../../model/malloy_types";
2
+ import { FieldSpace } from "../types/field-space";
3
+ import { MalloyElement } from "../types/malloy-element";
4
+ import { QOPDesc } from "../query-properties/qop-desc";
5
+ import { QueryInputSpace } from "../field-space/query-spaces";
6
+ interface AppendResult {
7
+ opList: PipeSegment[];
8
+ structDef: StructDef;
9
+ }
10
+ /**
11
+ * Generic abstract for all pipelines, the first segment might be a reference
12
+ * to an existing pipeline (query or turtle), and if there is a refinement it
13
+ * is refers to the first segment of the composed pipeline.
14
+ */
15
+ export declare abstract class PipelineDesc extends MalloyElement {
16
+ elementType: string;
17
+ protected headRefinement?: QOPDesc;
18
+ protected qops: QOPDesc[];
19
+ nestedInQuerySpace?: QueryInputSpace;
20
+ refineHead(refinement: QOPDesc): void;
21
+ addSegments(...segDesc: QOPDesc[]): void;
22
+ protected appendOps(modelPipe: PipeSegment[], existingEndSpace: FieldSpace): AppendResult;
23
+ protected refinePipeline(fs: FieldSpace, modelPipe: Pipeline): Pipeline;
24
+ protected expandTurtle(turtleName: string, fromStruct: StructDef): {
25
+ pipeline: PipeSegment[];
26
+ location: DocumentLocation | undefined;
27
+ };
28
+ protected getOutputStruct(walkStruct: StructDef, pipeline: PipeSegment[]): StructDef;
29
+ }
30
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.PipelineDesc = void 0;
26
+ const malloy_element_1 = require("../types/malloy-element");
27
+ const struct_utils_1 = require("../struct-utils");
28
+ /**
29
+ * Generic abstract for all pipelines, the first segment might be a reference
30
+ * to an existing pipeline (query or turtle), and if there is a refinement it
31
+ * is refers to the first segment of the composed pipeline.
32
+ */
33
+ class PipelineDesc extends malloy_element_1.MalloyElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.elementType = "pipelineDesc";
37
+ this.qops = [];
38
+ }
39
+ refineHead(refinement) {
40
+ this.headRefinement = refinement;
41
+ this.has({ headRefinement: refinement });
42
+ }
43
+ addSegments(...segDesc) {
44
+ this.qops.push(...segDesc);
45
+ this.has({ segments: this.qops });
46
+ }
47
+ appendOps(modelPipe, existingEndSpace) {
48
+ let nextFS = existingEndSpace;
49
+ let returnPipe;
50
+ for (const qop of this.qops) {
51
+ const qopIsNested = modelPipe.length == 0;
52
+ const next = qop.getOp(nextFS, qopIsNested ? this : null);
53
+ if (returnPipe == undefined) {
54
+ returnPipe = [...modelPipe];
55
+ }
56
+ returnPipe.push(next.segment);
57
+ nextFS = next.outputSpace();
58
+ }
59
+ return {
60
+ opList: returnPipe || modelPipe,
61
+ structDef: nextFS.structDef(),
62
+ };
63
+ }
64
+ refinePipeline(fs, modelPipe) {
65
+ if (!this.headRefinement) {
66
+ return modelPipe;
67
+ }
68
+ const pipeline = [];
69
+ if (modelPipe.pipeHead) {
70
+ const { pipeline: turtlePipe } = this.expandTurtle(modelPipe.pipeHead.name, fs.structDef());
71
+ pipeline.push(...turtlePipe);
72
+ }
73
+ pipeline.push(...modelPipe.pipeline);
74
+ const firstSeg = pipeline[0];
75
+ if (firstSeg) {
76
+ this.headRefinement.refineFrom(firstSeg);
77
+ }
78
+ pipeline[0] = this.headRefinement.getOp(fs, this).segment;
79
+ return { pipeline };
80
+ }
81
+ expandTurtle(turtleName, fromStruct) {
82
+ const turtle = (0, struct_utils_1.getStructFieldDef)(fromStruct, turtleName);
83
+ if (!turtle) {
84
+ this.log(`Query '${turtleName}' is not defined in source`);
85
+ }
86
+ else if (turtle.type !== "turtle") {
87
+ this.log(`'${turtleName}' is not a query`);
88
+ }
89
+ else {
90
+ return { pipeline: turtle.pipeline, location: turtle.location };
91
+ }
92
+ return { pipeline: [], location: undefined };
93
+ }
94
+ getOutputStruct(walkStruct, pipeline) {
95
+ for (const modelQop of pipeline) {
96
+ walkStruct = (0, struct_utils_1.opOutputStruct)(this, walkStruct, modelQop);
97
+ }
98
+ return walkStruct;
99
+ }
100
+ }
101
+ exports.PipelineDesc = PipelineDesc;
102
+ //# sourceMappingURL=pipeline-desc.js.map
@@ -0,0 +1,15 @@
1
+ import { StructDef } from "../../../model/malloy_types";
2
+ import { ExploreDesc } from "../types/explore-desc";
3
+ import { HasParameter } from "../parameters/has-parameter";
4
+ import { Source } from "./source";
5
+ /**
6
+ * A Source made from a source reference and a set of refinements
7
+ */
8
+ export declare class RefinedSource extends Source {
9
+ readonly source: Source;
10
+ readonly refinement: ExploreDesc;
11
+ elementType: string;
12
+ constructor(source: Source, refinement: ExploreDesc);
13
+ structDef(): StructDef;
14
+ withParameters(pList: HasParameter[] | undefined): StructDef;
15
+ }
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.RefinedSource = void 0;
26
+ const lodash_1 = require("lodash");
27
+ const malloy_types_1 = require("../../../model/malloy_types");
28
+ const field_list_edit_1 = require("../source-properties/field-list-edit");
29
+ const primary_key_1 = require("../source-properties/primary-key");
30
+ const renames_1 = require("../source-properties/renames");
31
+ const turtles_1 = require("../source-properties/turtles");
32
+ const source_1 = require("./source");
33
+ const declare_fields_1 = require("../query-properties/declare-fields");
34
+ const filters_1 = require("../query-properties/filters");
35
+ const joins_1 = require("../query-properties/joins");
36
+ const refined_space_1 = require("../field-space/refined-space");
37
+ /**
38
+ * A Source made from a source reference and a set of refinements
39
+ */
40
+ class RefinedSource extends source_1.Source {
41
+ constructor(source, refinement) {
42
+ super({ source, refinement });
43
+ this.source = source;
44
+ this.refinement = refinement;
45
+ this.elementType = "refinedSource";
46
+ }
47
+ structDef() {
48
+ return this.withParameters([]);
49
+ }
50
+ withParameters(pList) {
51
+ let primaryKey;
52
+ let fieldListEdit;
53
+ const fields = [];
54
+ const filters = [];
55
+ for (const el of this.refinement.list) {
56
+ const errTo = el;
57
+ if (el instanceof primary_key_1.PrimaryKey) {
58
+ if (primaryKey) {
59
+ primaryKey.log("Primary key already defined");
60
+ el.log("Primary key redefined");
61
+ }
62
+ primaryKey = el;
63
+ }
64
+ else if (el instanceof field_list_edit_1.FieldListEdit) {
65
+ if (fieldListEdit) {
66
+ fieldListEdit.log("Too many accept/except statements");
67
+ el.log("Too many accept/except statements");
68
+ }
69
+ fieldListEdit = el;
70
+ }
71
+ else if (el instanceof declare_fields_1.DeclareFields ||
72
+ el instanceof joins_1.Joins ||
73
+ el instanceof turtles_1.Turtles ||
74
+ el instanceof renames_1.Renames) {
75
+ fields.push(...el.list);
76
+ }
77
+ else if (el instanceof filters_1.Filter) {
78
+ filters.push(el);
79
+ }
80
+ else {
81
+ errTo.log(`Unexpected explore property: '${errTo.elementType}'`);
82
+ }
83
+ }
84
+ const from = (0, lodash_1.cloneDeep)(this.source.structDef());
85
+ if (primaryKey) {
86
+ from.primaryKey = primaryKey.field.name;
87
+ }
88
+ const fs = refined_space_1.RefinedSpace.filteredFrom(from, fieldListEdit);
89
+ fs.addField(...fields);
90
+ if (pList) {
91
+ fs.addParameters(pList);
92
+ }
93
+ if (primaryKey) {
94
+ const keyDef = primaryKey.field.getField(fs);
95
+ if (keyDef.error) {
96
+ primaryKey.log(keyDef.error);
97
+ }
98
+ }
99
+ const retStruct = fs.structDef();
100
+ const filterList = retStruct.filterList || [];
101
+ let moreFilters = false;
102
+ for (const filter of filters) {
103
+ for (const el of filter.list) {
104
+ const fc = el.filterExpression(fs);
105
+ if ((0, malloy_types_1.expressionIsCalculation)(fc.expressionType)) {
106
+ el.log("Can't use aggregate computations in top level filters");
107
+ }
108
+ else {
109
+ filterList.push(fc);
110
+ moreFilters = true;
111
+ }
112
+ }
113
+ }
114
+ if (moreFilters) {
115
+ return { ...retStruct, filterList };
116
+ }
117
+ return retStruct;
118
+ }
119
+ }
120
+ exports.RefinedSource = RefinedSource;
121
+ //# sourceMappingURL=refined-source.js.map
@@ -0,0 +1,12 @@
1
+ import { StructDef, StructRef } from "../../../model/malloy_types";
2
+ import { MalloyElement } from "../types/malloy-element";
3
+ import { HasParameter } from "../parameters/has-parameter";
4
+ /**
5
+ * A "Source" is a thing which you can run queries against. The main
6
+ * function of a source is to represent an eventual StructDef
7
+ */
8
+ export declare abstract class Source extends MalloyElement {
9
+ abstract structDef(): StructDef;
10
+ structRef(): StructRef;
11
+ withParameters(pList: HasParameter[] | undefined): StructDef;
12
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Source = void 0;
26
+ const malloy_element_1 = require("../types/malloy-element");
27
+ /**
28
+ * A "Source" is a thing which you can run queries against. The main
29
+ * function of a source is to represent an eventual StructDef
30
+ */
31
+ class Source extends malloy_element_1.MalloyElement {
32
+ structRef() {
33
+ return this.structDef();
34
+ }
35
+ withParameters(pList) {
36
+ const before = this.structDef();
37
+ // TODO name collisions are flagged where?
38
+ if (pList) {
39
+ const parameters = { ...(before.parameters || {}) };
40
+ for (const hasP of pList) {
41
+ const pVal = hasP.parameter();
42
+ parameters[pVal.name] = pVal;
43
+ }
44
+ return {
45
+ ...before,
46
+ parameters,
47
+ };
48
+ }
49
+ return before;
50
+ }
51
+ }
52
+ exports.Source = Source;
53
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1,9 @@
1
+ import { IndexSegment, ProjectSegment, Query, ReduceSegment, StructDef } from "../../model/malloy_types";
2
+ export declare class ErrorFactory {
3
+ static get structDef(): StructDef;
4
+ static isErrorStructDef(s: StructDef): boolean;
5
+ static get query(): Query;
6
+ static get reduceSegment(): ReduceSegment;
7
+ static get projectSegment(): ProjectSegment;
8
+ static get indexSegment(): IndexSegment;
9
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ErrorFactory = void 0;
26
+ const theErrorStruct = {
27
+ type: "struct",
28
+ name: "~malformed~",
29
+ dialect: "~malformed~",
30
+ structSource: { type: "table", tablePath: "//undefined_error_table_path" },
31
+ structRelationship: {
32
+ type: "basetable",
33
+ connectionName: "//undefined_error_connection",
34
+ },
35
+ fields: [],
36
+ };
37
+ class ErrorFactory {
38
+ static get structDef() {
39
+ return { ...theErrorStruct };
40
+ }
41
+ static isErrorStructDef(s) {
42
+ return s.name.includes(theErrorStruct.name);
43
+ }
44
+ static get query() {
45
+ return {
46
+ structRef: ErrorFactory.structDef,
47
+ pipeline: [],
48
+ };
49
+ }
50
+ static get reduceSegment() {
51
+ return { type: "reduce", fields: [] };
52
+ }
53
+ static get projectSegment() {
54
+ return { type: "project", fields: [] };
55
+ }
56
+ static get indexSegment() {
57
+ return { type: "index", fields: [] };
58
+ }
59
+ }
60
+ exports.ErrorFactory = ErrorFactory;
61
+ //# sourceMappingURL=error-factory.js.map
@@ -0,0 +1,18 @@
1
+ import { FilterExpression, PipeSegment, Sampling } from "../../../model/malloy_types";
2
+ import { FieldName, FieldSpace } from "../types/field-space";
3
+ import { Limit } from "../query-properties/limit";
4
+ import { IndexFieldSpace } from "../field-space/index-field-space";
5
+ import { QueryProperty } from "../types/query-property";
6
+ import { Executor } from "../types/executor";
7
+ import { QueryInputSpace } from "../field-space/query-spaces";
8
+ export declare class IndexExecutor implements Executor {
9
+ filters: FilterExpression[];
10
+ limit?: Limit;
11
+ indexOn?: FieldName;
12
+ sample?: Sampling;
13
+ resultFS: IndexFieldSpace;
14
+ inputFS: QueryInputSpace;
15
+ constructor(inputFS: FieldSpace);
16
+ execute(qp: QueryProperty): void;
17
+ finalize(from: PipeSegment | undefined): PipeSegment;
18
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2023 Google LLC
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining
6
+ * a copy of this software and associated documentation files
7
+ * (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge,
9
+ * publish, distribute, sublicense, and/or sell copies of the Software,
10
+ * and to permit persons to whom the Software is furnished to do so,
11
+ * subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be
14
+ * included in all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.IndexExecutor = void 0;
26
+ const error_factory_1 = require("../error-factory");
27
+ const filters_1 = require("../query-properties/filters");
28
+ const indexing_1 = require("../query-properties/indexing");
29
+ const limit_1 = require("../query-properties/limit");
30
+ const sampling_1 = require("../query-properties/sampling");
31
+ const index_field_space_1 = require("../field-space/index-field-space");
32
+ class IndexExecutor {
33
+ constructor(inputFS) {
34
+ this.filters = [];
35
+ this.resultFS = new index_field_space_1.IndexFieldSpace(inputFS);
36
+ this.inputFS = this.resultFS.exprSpace;
37
+ }
38
+ execute(qp) {
39
+ if (qp instanceof filters_1.Filter) {
40
+ this.filters.push(...qp.getFilterList(this.inputFS));
41
+ }
42
+ else if (qp instanceof limit_1.Limit) {
43
+ if (this.limit) {
44
+ this.limit.log("Ignored, too many limit: statements");
45
+ }
46
+ this.limit = qp;
47
+ }
48
+ else if (qp instanceof indexing_1.Index) {
49
+ this.resultFS.addMembers(qp.fields.list);
50
+ if (qp.weightBy) {
51
+ if (this.indexOn) {
52
+ this.indexOn.log("Ignoring previous BY");
53
+ }
54
+ this.indexOn = qp.weightBy;
55
+ }
56
+ }
57
+ else if (qp instanceof sampling_1.SampleProperty) {
58
+ this.sample = qp.sampling();
59
+ }
60
+ else {
61
+ qp.log("Not legal in an index query operation");
62
+ }
63
+ }
64
+ finalize(from) {
65
+ if (from && from.type !== "index") {
66
+ this.resultFS.log(`Can't refine index with ${from.type}`);
67
+ return error_factory_1.ErrorFactory.indexSegment;
68
+ }
69
+ const indexSegment = this.resultFS.getPipeSegment(from);
70
+ const oldFilters = (from === null || from === void 0 ? void 0 : from.filterList) || [];
71
+ if (this.filters.length > 0 && !oldFilters) {
72
+ indexSegment.filterList = this.filters;
73
+ }
74
+ else if (oldFilters) {
75
+ indexSegment.filterList = [...oldFilters, ...this.filters];
76
+ }
77
+ if (from === null || from === void 0 ? void 0 : from.limit) {
78
+ indexSegment.limit = from.limit;
79
+ }
80
+ if (this.limit) {
81
+ indexSegment.limit = this.limit.limit;
82
+ }
83
+ if (this.indexOn) {
84
+ indexSegment.weightMeasure = this.indexOn.refString;
85
+ }
86
+ if (from === null || from === void 0 ? void 0 : from.sample) {
87
+ indexSegment.sample = from.sample;
88
+ }
89
+ if (this.sample) {
90
+ indexSegment.sample = this.sample;
91
+ }
92
+ return indexSegment;
93
+ }
94
+ }
95
+ exports.IndexExecutor = IndexExecutor;
96
+ //# sourceMappingURL=index-executor.js.map
@@ -0,0 +1,10 @@
1
+ import { PipeSegment } from "../../../model/malloy_types";
2
+ import { FieldSpace } from "../types/field-space";
3
+ import { ProjectFieldSpace } from "../field-space/project-field-space";
4
+ import { QueryProperty } from "../types/query-property";
5
+ import { ReduceExecutor } from "./reduce-executor";
6
+ export declare class ProjectExecutor extends ReduceExecutor {
7
+ getResultSpace(fs: FieldSpace): ProjectFieldSpace;
8
+ execute(qp: QueryProperty): void;
9
+ finalize(fromSeg: PipeSegment | undefined): PipeSegment;
10
+ }