@malloydata/malloy 0.0.403 → 0.0.405

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 (295) hide show
  1. package/LICENSE +77 -0
  2. package/dist/api/asynchronous.js +2 -4
  3. package/dist/api/connection.js +2 -4
  4. package/dist/api/core.js +5 -6
  5. package/dist/api/foundation/annotation.js +3 -11
  6. package/dist/api/foundation/compile.js +15 -8
  7. package/dist/api/foundation/core.d.ts +44 -6
  8. package/dist/api/foundation/core.js +112 -37
  9. package/dist/api/foundation/result.js +1 -2
  10. package/dist/api/foundation/runtime.js +9 -19
  11. package/dist/api/foundation/taggable.d.ts +5 -0
  12. package/dist/api/foundation/types.d.ts +15 -0
  13. package/dist/api/index.js +4 -6
  14. package/dist/api/sessioned.js +2 -4
  15. package/dist/api/stateless.js +2 -4
  16. package/dist/api/util.js +2 -4
  17. package/dist/connection/base_connection.js +2 -4
  18. package/dist/connection/types.d.ts +1 -3
  19. package/dist/connection_utils.js +2 -20
  20. package/dist/dialect/dialect.d.ts +9 -4
  21. package/dist/dialect/dialect.js +37 -31
  22. package/dist/dialect/dialect_map.js +2 -20
  23. package/dist/dialect/duckdb/dialect_functions.js +2 -4
  24. package/dist/dialect/duckdb/duckdb.js +2 -20
  25. package/dist/dialect/duckdb/function_overrides.js +2 -4
  26. package/dist/dialect/duckdb/index.js +2 -20
  27. package/dist/dialect/duckdb/table-path-parser.js +4 -4
  28. package/dist/dialect/functions/index.js +2 -20
  29. package/dist/dialect/functions/malloy_standard_functions.js +2 -4
  30. package/dist/dialect/functions/util.js +2 -21
  31. package/dist/dialect/index.js +2 -20
  32. package/dist/dialect/mysql/dialect_functions.js +2 -4
  33. package/dist/dialect/mysql/function_overrides.js +2 -4
  34. package/dist/dialect/mysql/index.js +2 -4
  35. package/dist/dialect/mysql/mysql.js +2 -20
  36. package/dist/dialect/pg_impl.d.ts +1 -0
  37. package/dist/dialect/pg_impl.js +10 -4
  38. package/dist/dialect/postgres/dialect_functions.js +2 -4
  39. package/dist/dialect/postgres/function_overrides.js +2 -4
  40. package/dist/dialect/postgres/index.js +2 -20
  41. package/dist/dialect/postgres/postgres.js +2 -20
  42. package/dist/dialect/snowflake/dialect_functions.js +2 -4
  43. package/dist/dialect/snowflake/function_overrides.js +2 -4
  44. package/dist/dialect/snowflake/index.js +2 -20
  45. package/dist/dialect/snowflake/snowflake.js +6 -25
  46. package/dist/dialect/standardsql/dialect_functions.js +2 -4
  47. package/dist/dialect/standardsql/function_overrides.js +2 -4
  48. package/dist/dialect/standardsql/index.js +2 -20
  49. package/dist/dialect/standardsql/standardsql.js +2 -20
  50. package/dist/dialect/tiny_parser.js +2 -4
  51. package/dist/dialect/trino/dialect_functions.js +2 -4
  52. package/dist/dialect/trino/function_overrides.js +2 -4
  53. package/dist/dialect/trino/index.js +2 -20
  54. package/dist/dialect/trino/trino.d.ts +1 -0
  55. package/dist/dialect/trino/trino.js +29 -26
  56. package/dist/index.js +4 -22
  57. package/dist/lang/ast/ast-utils.js +2 -20
  58. package/dist/lang/ast/error-factory.js +2 -20
  59. package/dist/lang/ast/expressions/apply.js +2 -20
  60. package/dist/lang/ast/expressions/binary-boolean.js +2 -20
  61. package/dist/lang/ast/expressions/binary-numeric.js +2 -20
  62. package/dist/lang/ast/expressions/boolean.js +2 -20
  63. package/dist/lang/ast/expressions/case.js +2 -4
  64. package/dist/lang/ast/expressions/constant-expression.js +2 -20
  65. package/dist/lang/ast/expressions/expr-add-sub.js +2 -20
  66. package/dist/lang/ast/expressions/expr-aggregate-function.js +2 -20
  67. package/dist/lang/ast/expressions/expr-alternation-tree.js +2 -20
  68. package/dist/lang/ast/expressions/expr-array-literal.js +2 -4
  69. package/dist/lang/ast/expressions/expr-asymmetric.js +2 -20
  70. package/dist/lang/ast/expressions/expr-avg.js +2 -20
  71. package/dist/lang/ast/expressions/expr-cast.js +2 -20
  72. package/dist/lang/ast/expressions/expr-coalesce.js +2 -20
  73. package/dist/lang/ast/expressions/expr-compare.js +2 -20
  74. package/dist/lang/ast/expressions/expr-count-distinct.js +2 -20
  75. package/dist/lang/ast/expressions/expr-count.js +2 -20
  76. package/dist/lang/ast/expressions/expr-filter-expr.js +2 -4
  77. package/dist/lang/ast/expressions/expr-func.js +6 -24
  78. package/dist/lang/ast/expressions/expr-granular-time.js +2 -20
  79. package/dist/lang/ast/expressions/expr-id-reference.js +2 -20
  80. package/dist/lang/ast/expressions/expr-logical-op.js +2 -20
  81. package/dist/lang/ast/expressions/expr-max.js +2 -20
  82. package/dist/lang/ast/expressions/expr-min.js +2 -20
  83. package/dist/lang/ast/expressions/expr-minus.js +2 -20
  84. package/dist/lang/ast/expressions/expr-mul-div.js +2 -20
  85. package/dist/lang/ast/expressions/expr-not.js +2 -20
  86. package/dist/lang/ast/expressions/expr-now.js +2 -20
  87. package/dist/lang/ast/expressions/expr-null.js +2 -20
  88. package/dist/lang/ast/expressions/expr-number.js +2 -20
  89. package/dist/lang/ast/expressions/expr-parens.js +2 -20
  90. package/dist/lang/ast/expressions/expr-props.js +2 -20
  91. package/dist/lang/ast/expressions/expr-record-literal.js +2 -4
  92. package/dist/lang/ast/expressions/expr-regex.js +2 -20
  93. package/dist/lang/ast/expressions/expr-string.js +4 -0
  94. package/dist/lang/ast/expressions/expr-sum.js +2 -20
  95. package/dist/lang/ast/expressions/expr-time-extract.js +2 -20
  96. package/dist/lang/ast/expressions/expr-time.js +2 -20
  97. package/dist/lang/ast/expressions/expr-ungroup.js +2 -20
  98. package/dist/lang/ast/expressions/for-range.js +2 -20
  99. package/dist/lang/ast/expressions/function-ordering.js +2 -20
  100. package/dist/lang/ast/expressions/grouped_by.js +2 -4
  101. package/dist/lang/ast/expressions/partial-compare.js +2 -20
  102. package/dist/lang/ast/expressions/partition_by.js +2 -20
  103. package/dist/lang/ast/expressions/pick-when.js +2 -20
  104. package/dist/lang/ast/expressions/range.js +2 -20
  105. package/dist/lang/ast/expressions/time-frame.js +2 -20
  106. package/dist/lang/ast/expressions/time-literal.js +2 -20
  107. package/dist/lang/ast/expressions/unary.js +2 -20
  108. package/dist/lang/ast/field-space/ast-view-field.js +2 -20
  109. package/dist/lang/ast/field-space/column-space-field.js +2 -20
  110. package/dist/lang/ast/field-space/def-space.js +2 -4
  111. package/dist/lang/ast/field-space/dynamic-space.js +4 -22
  112. package/dist/lang/ast/field-space/include-utils.js +6 -8
  113. package/dist/lang/ast/field-space/index-field-space.js +2 -20
  114. package/dist/lang/ast/field-space/ir-view-field.js +2 -20
  115. package/dist/lang/ast/field-space/join-space-field.js +2 -20
  116. package/dist/lang/ast/field-space/parameter-space.js +2 -4
  117. package/dist/lang/ast/field-space/passthrough-space.js +2 -4
  118. package/dist/lang/ast/field-space/permissive-space.js +2 -4
  119. package/dist/lang/ast/field-space/project-field-space.js +2 -20
  120. package/dist/lang/ast/field-space/query-input-space.js +2 -20
  121. package/dist/lang/ast/field-space/query-spaces.js +8 -28
  122. package/dist/lang/ast/field-space/reference-field.js +5 -21
  123. package/dist/lang/ast/field-space/refine-from-space-field.js +2 -4
  124. package/dist/lang/ast/field-space/refined-space.js +8 -26
  125. package/dist/lang/ast/field-space/rename-space-field.js +8 -29
  126. package/dist/lang/ast/field-space/static-space.js +3 -21
  127. package/dist/lang/ast/field-space/struct-space-field-base.js +3 -21
  128. package/dist/lang/ast/field-space/view-field.js +2 -20
  129. package/dist/lang/ast/index.js +2 -20
  130. package/dist/lang/ast/parameters/argument.js +2 -4
  131. package/dist/lang/ast/parameters/has-parameter.js +2 -20
  132. package/dist/lang/ast/query-builders/index-builder.js +2 -20
  133. package/dist/lang/ast/query-builders/partial-builder.js +4 -0
  134. package/dist/lang/ast/query-builders/project-builder.js +2 -20
  135. package/dist/lang/ast/query-builders/reduce-builder.js +2 -20
  136. package/dist/lang/ast/query-elements/anonymous-query.js +3 -21
  137. package/dist/lang/ast/query-elements/query-arrow.js +2 -20
  138. package/dist/lang/ast/query-elements/query-base.js +2 -20
  139. package/dist/lang/ast/query-elements/query-head-struct.js +2 -20
  140. package/dist/lang/ast/query-elements/query-raw.js +2 -20
  141. package/dist/lang/ast/query-elements/query-reference.js +2 -20
  142. package/dist/lang/ast/query-elements/query-refine.js +2 -20
  143. package/dist/lang/ast/query-items/field-declaration.js +3 -21
  144. package/dist/lang/ast/query-items/field-references.js +2 -20
  145. package/dist/lang/ast/query-items/typecheck_utils.js +2 -20
  146. package/dist/lang/ast/query-properties/aggregate.js +2 -20
  147. package/dist/lang/ast/query-properties/calculate.js +2 -20
  148. package/dist/lang/ast/query-properties/declare-fields.js +2 -20
  149. package/dist/lang/ast/query-properties/drill.js +5 -10
  150. package/dist/lang/ast/query-properties/extend.js +2 -20
  151. package/dist/lang/ast/query-properties/filters.js +2 -20
  152. package/dist/lang/ast/query-properties/group-by.js +2 -20
  153. package/dist/lang/ast/query-properties/indexing.js +2 -20
  154. package/dist/lang/ast/query-properties/limit.js +2 -20
  155. package/dist/lang/ast/query-properties/nest.js +6 -21
  156. package/dist/lang/ast/query-properties/nests.js +2 -20
  157. package/dist/lang/ast/query-properties/ordering.js +2 -20
  158. package/dist/lang/ast/query-properties/project-statement.js +2 -20
  159. package/dist/lang/ast/query-properties/qop-desc.js +2 -20
  160. package/dist/lang/ast/query-properties/sampling.js +2 -20
  161. package/dist/lang/ast/query-utils.js +2 -20
  162. package/dist/lang/ast/source-elements/composite-source.js +3 -6
  163. package/dist/lang/ast/source-elements/named-source.js +2 -23
  164. package/dist/lang/ast/source-elements/query-source.js +2 -22
  165. package/dist/lang/ast/source-elements/refined-source.js +2 -22
  166. package/dist/lang/ast/source-elements/source.js +2 -20
  167. package/dist/lang/ast/source-elements/sql-source.js +8 -33
  168. package/dist/lang/ast/source-elements/table-source.js +11 -32
  169. package/dist/lang/ast/source-elements/typed-source.js +2 -3
  170. package/dist/lang/ast/source-elements/virtual-source.js +1 -2
  171. package/dist/lang/ast/source-properties/dimensions.js +2 -20
  172. package/dist/lang/ast/source-properties/field-list-edit.js +2 -20
  173. package/dist/lang/ast/source-properties/join.js +7 -31
  174. package/dist/lang/ast/source-properties/measures.js +2 -20
  175. package/dist/lang/ast/source-properties/primary-key.js +2 -20
  176. package/dist/lang/ast/source-properties/renames.js +3 -21
  177. package/dist/lang/ast/source-properties/timezone-statement.js +2 -20
  178. package/dist/lang/ast/source-properties/user-type-shape.js +9 -4
  179. package/dist/lang/ast/source-properties/view-field-declaration.js +6 -21
  180. package/dist/lang/ast/source-properties/views.js +2 -20
  181. package/dist/lang/ast/source-query-elements/include-item.js +2 -4
  182. package/dist/lang/ast/source-query-elements/source-query-element.js +2 -20
  183. package/dist/lang/ast/source-query-elements/sq-arrow.js +2 -20
  184. package/dist/lang/ast/source-query-elements/sq-compose.js +2 -4
  185. package/dist/lang/ast/source-query-elements/sq-extend.js +2 -20
  186. package/dist/lang/ast/source-query-elements/sq-reference.js +3 -21
  187. package/dist/lang/ast/source-query-elements/sq-refine.js +2 -20
  188. package/dist/lang/ast/source-query-elements/sq-source.js +2 -20
  189. package/dist/lang/ast/sql-elements/sql-string.js +2 -20
  190. package/dist/lang/ast/statements/define-given.js +2 -2
  191. package/dist/lang/ast/statements/define-query.js +3 -21
  192. package/dist/lang/ast/statements/define-source.js +8 -23
  193. package/dist/lang/ast/statements/define-user-type.js +1 -1
  194. package/dist/lang/ast/statements/import-statement.js +7 -20
  195. package/dist/lang/ast/time-utils.js +2 -20
  196. package/dist/lang/ast/typedesc-utils.js +2 -20
  197. package/dist/lang/ast/types/annotation-elements.js +2 -20
  198. package/dist/lang/ast/types/binary_operators.js +2 -4
  199. package/dist/lang/ast/types/definition-list.js +2 -20
  200. package/dist/lang/ast/types/dialect-name-space.js +2 -4
  201. package/dist/lang/ast/types/document-compile-result.js +2 -20
  202. package/dist/lang/ast/types/expr-result.js +2 -20
  203. package/dist/lang/ast/types/expr-value.js +2 -20
  204. package/dist/lang/ast/types/expression-def.js +2 -20
  205. package/dist/lang/ast/types/field-collection-member.js +2 -20
  206. package/dist/lang/ast/types/field-prop-statement.js +2 -20
  207. package/dist/lang/ast/types/field-space.js +2 -20
  208. package/dist/lang/ast/types/global-name-space.js +2 -20
  209. package/dist/lang/ast/types/granular-result.js +2 -20
  210. package/dist/lang/ast/types/literal.d.ts +1 -1
  211. package/dist/lang/ast/types/literal.js +2 -4
  212. package/dist/lang/ast/types/lookup-result.js +2 -20
  213. package/dist/lang/ast/types/malloy-element.d.ts +28 -4
  214. package/dist/lang/ast/types/malloy-element.js +63 -77
  215. package/dist/lang/ast/types/model-entry.js +2 -20
  216. package/dist/lang/ast/types/name-space.js +2 -20
  217. package/dist/lang/ast/types/noteable.js +2 -20
  218. package/dist/lang/ast/types/op-desc.js +2 -20
  219. package/dist/lang/ast/types/pipeline-comp.js +2 -20
  220. package/dist/lang/ast/types/query-builder.js +2 -20
  221. package/dist/lang/ast/types/query-comp.js +2 -20
  222. package/dist/lang/ast/types/query-element.js +2 -20
  223. package/dist/lang/ast/types/query-extend-property.js +2 -20
  224. package/dist/lang/ast/types/query-item.js +2 -20
  225. package/dist/lang/ast/types/query-property-interface.js +2 -20
  226. package/dist/lang/ast/types/query-property.js +2 -20
  227. package/dist/lang/ast/types/source-desc.js +2 -20
  228. package/dist/lang/ast/types/source-property.js +2 -20
  229. package/dist/lang/ast/types/space-entry.js +2 -20
  230. package/dist/lang/ast/types/space-field.js +2 -20
  231. package/dist/lang/ast/types/space-param.js +2 -20
  232. package/dist/lang/ast/types/time-result.js +2 -20
  233. package/dist/lang/ast/view-elements/qop-desc-view.js +2 -20
  234. package/dist/lang/ast/view-elements/reference-view.js +2 -20
  235. package/dist/lang/ast/view-elements/refine-utils.js +2 -20
  236. package/dist/lang/ast/view-elements/view-arrow.js +2 -20
  237. package/dist/lang/ast/view-elements/view-refine.js +2 -20
  238. package/dist/lang/ast/view-elements/view.js +2 -20
  239. package/dist/lang/composite-source-utils.js +15 -21
  240. package/dist/lang/field-utils.js +4 -22
  241. package/dist/lang/index.js +2 -20
  242. package/dist/lang/malloy-parse-info.js +2 -20
  243. package/dist/lang/malloy-to-ast.d.ts +1 -1
  244. package/dist/lang/malloy-to-ast.js +2 -21
  245. package/dist/lang/malloy-to-stable-query.js +2 -4
  246. package/dist/lang/parse-log.js +2 -20
  247. package/dist/lang/parse-malloy.d.ts +1 -9
  248. package/dist/lang/parse-malloy.js +8 -50
  249. package/dist/lang/parse-tree-walkers/document-completion-walker.js +2 -20
  250. package/dist/lang/parse-tree-walkers/document-help-context-walker.js +2 -20
  251. package/dist/lang/parse-tree-walkers/document-symbol-walker.js +2 -20
  252. package/dist/lang/parse-tree-walkers/explore-query-walker.js +2 -20
  253. package/dist/lang/parse-tree-walkers/find-external-references.js +2 -20
  254. package/dist/lang/parse-tree-walkers/find-table-path-walker.js +2 -20
  255. package/dist/lang/parse-utils.js +2 -20
  256. package/dist/lang/reference-list.js +2 -20
  257. package/dist/lang/run-malloy-parser.js +2 -4
  258. package/dist/lang/syntax-errors/custom-error-messages.js +2 -4
  259. package/dist/lang/syntax-errors/malloy-error-strategy.js +2 -4
  260. package/dist/lang/syntax-errors/malloy-parser-error-listener.js +2 -4
  261. package/dist/lang/test/expr-to-str.js +2 -4
  262. package/dist/lang/test/parse-expects.js +2 -20
  263. package/dist/lang/test/test-translator.js +6 -29
  264. package/dist/lang/translate-response.d.ts +1 -5
  265. package/dist/lang/translate-response.js +2 -20
  266. package/dist/lang/utils.js +2 -20
  267. package/dist/lang/zone.js +2 -20
  268. package/dist/model/annotation_utils.d.ts +37 -0
  269. package/dist/model/annotation_utils.js +85 -0
  270. package/dist/model/field_instance.js +1 -1
  271. package/dist/model/filter_compilers.js +2 -4
  272. package/dist/model/index.d.ts +2 -1
  273. package/dist/model/index.js +6 -21
  274. package/dist/model/malloy_types.d.ts +43 -9
  275. package/dist/model/malloy_types.js +13 -29
  276. package/dist/model/query_model_impl.d.ts +0 -1
  277. package/dist/model/query_model_impl.js +9 -28
  278. package/dist/model/query_node.d.ts +1 -13
  279. package/dist/model/query_node.js +8 -52
  280. package/dist/model/query_query.js +4 -18
  281. package/dist/model/source_def_utils.js +0 -2
  282. package/dist/model/sql_block.js +2 -20
  283. package/dist/model/utils.d.ts +9 -2
  284. package/dist/model/utils.js +18 -24
  285. package/dist/run_sql_options.d.ts +0 -5
  286. package/dist/run_sql_options.js +2 -20
  287. package/dist/runtime_types.js +2 -20
  288. package/dist/test/cellsToObject.js +2 -4
  289. package/dist/timing.js +2 -4
  290. package/dist/to_stable.js +9 -13
  291. package/dist/version.d.ts +1 -1
  292. package/dist/version.js +1 -1
  293. package/package.json +4 -4
  294. package/dist/lang/parse-tree-walkers/model-annotation-walker.d.ts +0 -5
  295. package/dist/lang/parse-tree-walkers/model-annotation-walker.js +0 -50
@@ -404,9 +404,6 @@ class QueryQuery extends query_node_1.QueryField {
404
404
  name,
405
405
  fields: structDef.fields,
406
406
  ...(structDef.annotations && { annotations: structDef.annotations }),
407
- ...(structDef.modelAnnotations && {
408
- modelAnnotations: structDef.modelAnnotations,
409
- }),
410
407
  resultMetadata,
411
408
  ...(queryTimezone && { queryTimezone }),
412
409
  };
@@ -419,9 +416,6 @@ class QueryQuery extends query_node_1.QueryField {
419
416
  name,
420
417
  fields: structDef.fields,
421
418
  ...(structDef.annotations && { annotations: structDef.annotations }),
422
- ...(structDef.modelAnnotations && {
423
- modelAnnotations: structDef.modelAnnotations,
424
- }),
425
419
  resultMetadata,
426
420
  ...(queryTimezone && { queryTimezone }),
427
421
  };
@@ -513,9 +507,6 @@ class QueryQuery extends query_node_1.QueryField {
513
507
  resultMetadata: this.getResultMetadata(this.rootResult),
514
508
  queryTimezone: resultStruct.getQueryInfo().queryTimezone,
515
509
  };
516
- if (this.parent.structDef.modelAnnotations) {
517
- outputStruct.modelAnnotations = this.parent.structDef.modelAnnotations;
518
- }
519
510
  return outputStruct;
520
511
  }
521
512
  getStructSourceSQL(qs, stageWriter) {
@@ -580,7 +571,7 @@ class QueryQuery extends query_node_1.QueryField {
580
571
  return ret.lastStageName;
581
572
  }
582
573
  default:
583
- throw new Error(`Cannot create SQL StageWriter from '${(0, malloy_types_1.getIdentifier)(qs.structDef)}' type '${qs.structDef.type}`);
574
+ throw new Error(`Cannot create SQL StageWriter from '${(0, malloy_types_1.activeName)(qs.structDef)}' type '${qs.structDef.type}`);
584
575
  }
585
576
  }
586
577
  /**
@@ -635,7 +626,7 @@ class QueryQuery extends query_node_1.QueryField {
635
626
  let s = '';
636
627
  const qs = ji.queryStruct;
637
628
  const qsDef = qs.structDef;
638
- (_a = qs.eventStream) === null || _a === void 0 ? void 0 : _a.emit('join-used', { name: (0, malloy_types_1.getIdentifier)(qsDef) });
629
+ (_a = qs.eventStream) === null || _a === void 0 ? void 0 : _a.emit('join-used', { name: (0, malloy_types_1.activeName)(qsDef) });
639
630
  qs.maybeEmitParameterizedSourceUsage();
640
631
  if ((0, malloy_types_1.isJoinedSource)(qsDef)) {
641
632
  let structSQL = this.getStructSourceSQL(qs, stageWriter);
@@ -1218,11 +1209,9 @@ class QueryQuery extends query_node_1.QueryField {
1218
1209
  outputPipelinedSQL: [],
1219
1210
  };
1220
1211
  this.generateStage0Fields(this.rootResult, f, stageWriter);
1221
- if (this.firstSegment.type === 'project' &&
1222
- !this.parent.modelCompilerFlags().has('unsafe_complex_select_query')) {
1212
+ if (this.firstSegment.type === 'project') {
1223
1213
  throw new malloy_compile_error_1.MalloyCompileError("Cannot use 'select:' in a stage that contains nested views. " +
1224
- 'Use `group_by:` or restructure the pipeline. ' +
1225
- 'Set `##! unsafe_complex_select_query` to bypass at your own risk.', 'compiler-project-with-turtles', this.fieldDef.location);
1214
+ 'Use `group_by:` or restructure the pipeline.', 'compiler-project-with-turtles', this.fieldDef.location);
1226
1215
  }
1227
1216
  const groupBy = 'GROUP BY ' + f.dimensionIndexes.join(',') + '\n';
1228
1217
  from += this.parent.dialect.sqlGroupSetTable(this.maxGroupSet) + '\n';
@@ -1821,9 +1810,6 @@ class QueryQueryIndex extends QueryQuery {
1821
1810
  ],
1822
1811
  connection: this.parent.connectionName,
1823
1812
  };
1824
- if (this.parent.structDef.modelAnnotations) {
1825
- ret.modelAnnotations = this.parent.structDef.modelAnnotations;
1826
- }
1827
1813
  return ret;
1828
1814
  }
1829
1815
  }
@@ -45,7 +45,6 @@ function mkQuerySourceDef(base, query, name) {
45
45
  location: base.location,
46
46
  // StructDefBase
47
47
  annotations: base.annotations,
48
- modelAnnotations: base.modelAnnotations,
49
48
  fields: base.fields,
50
49
  // Filtered
51
50
  filterList: base.filterList,
@@ -84,7 +83,6 @@ function mkSQLSourceDef(base, selectStr, selectSegments) {
84
83
  location: base.location,
85
84
  // StructDefBase
86
85
  annotations: base.annotations,
87
- modelAnnotations: base.modelAnnotations,
88
86
  fields: base.fields,
89
87
  // Filtered
90
88
  filterList: base.filterList,
@@ -1,25 +1,7 @@
1
1
  "use strict";
2
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.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
23
5
  */
24
6
  Object.defineProperty(exports, "__esModule", { value: true });
25
7
  exports.getSourceRequest = getSourceRequest;
@@ -1,4 +1,4 @@
1
- import type { AtomicTypeDef, Expr, FieldDef, GenericSQLExpr, GivenTypeDef, ModelDef, StructDef } from './malloy_types';
1
+ import type { AtomicTypeDef, Expr, FieldDef, GenericSQLExpr, GivenTypeDef, ModelDef, ModelID, StructDef } from './malloy_types';
2
2
  import type { DialectFieldList } from '../dialect';
3
3
  /**
4
4
  * Format a typeDef as user-readable Malloy type syntax. Used in error
@@ -74,8 +74,15 @@ export declare class GenerateState {
74
74
  withApply(s: string): GenerateState;
75
75
  withTotal(groupSet: number): GenerateState;
76
76
  }
77
+ /**
78
+ * Make a {@link ModelID} for a model. Pass the model's URL for a real model;
79
+ * omit it for a URL-less model to get a synthetic `"internal <uuid>"` id. The
80
+ * space makes the synthetic form an illegal URL so it can never collide with a
81
+ * real model URL.
82
+ */
83
+ export declare function mkModelID(url?: string): ModelID;
77
84
  /**
78
85
  * Create an empty ModelDef with the given name.
79
86
  * Use this factory to ensure all required fields are present.
80
87
  */
81
- export declare function mkModelDef(name: string): ModelDef;
88
+ export declare function mkModelDef(name: string, modelID?: ModelID): ModelDef;
@@ -1,25 +1,7 @@
1
1
  "use strict";
2
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.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
23
5
  */
24
6
  Object.defineProperty(exports, "__esModule", { value: true });
25
7
  exports.GenerateState = exports.AndChain = void 0;
@@ -38,6 +20,7 @@ exports.getDialectFieldList = getDialectFieldList;
38
20
  exports.pathToKey = pathToKey;
39
21
  exports.groupingKey = groupingKey;
40
22
  exports.caseGroup = caseGroup;
23
+ exports.mkModelID = mkModelID;
41
24
  exports.mkModelDef = mkModelDef;
42
25
  const uuid_1 = require("uuid");
43
26
  const sha256_1 = require("@noble/hashes/sha256");
@@ -270,9 +253,9 @@ function getDialectFieldList(structDef) {
270
253
  for (const f of structDef.fields.filter(malloy_types_1.fieldIsIntrinsic)) {
271
254
  dialectFieldList.push({
272
255
  typeDef: f,
273
- sqlExpression: (0, malloy_types_1.getIdentifier)(f),
274
- rawName: (0, malloy_types_1.getIdentifier)(f),
275
- sqlOutputName: (0, malloy_types_1.getIdentifier)(f),
256
+ sqlExpression: (0, malloy_types_1.activeName)(f),
257
+ rawName: (0, malloy_types_1.activeName)(f),
258
+ sqlOutputName: (0, malloy_types_1.activeName)(f),
276
259
  });
277
260
  }
278
261
  return dialectFieldList;
@@ -326,16 +309,27 @@ class GenerateState {
326
309
  }
327
310
  }
328
311
  exports.GenerateState = GenerateState;
312
+ /**
313
+ * Make a {@link ModelID} for a model. Pass the model's URL for a real model;
314
+ * omit it for a URL-less model to get a synthetic `"internal <uuid>"` id. The
315
+ * space makes the synthetic form an illegal URL so it can never collide with a
316
+ * real model URL.
317
+ */
318
+ function mkModelID(url) {
319
+ return url !== null && url !== void 0 ? url : `internal ${(0, uuid_1.v4)()}`;
320
+ }
329
321
  /**
330
322
  * Create an empty ModelDef with the given name.
331
323
  * Use this factory to ensure all required fields are present.
332
324
  */
333
- function mkModelDef(name) {
325
+ function mkModelDef(name, modelID = mkModelID()) {
334
326
  return {
335
327
  name,
328
+ modelID,
336
329
  exports: [],
337
330
  contents: (0, malloy_types_1.mkSafeRecord)(),
338
331
  sourceRegistry: {},
332
+ modelAnnotations: {},
339
333
  queryList: [],
340
334
  dependencies: {},
341
335
  };
@@ -1,10 +1,5 @@
1
- import type { AnnotationsDef } from './model/malloy_types';
2
1
  export interface RunSQLOptions {
3
2
  rowLimit?: number;
4
3
  abortSignal?: AbortSignal;
5
- /** Model annotations forwarded to the adapter (e.g. `##!` dialect flags). */
6
- modelAnnotations?: AnnotationsDef;
7
- /** Query annotations forwarded to the adapter. */
8
- queryAnnotations?: AnnotationsDef;
9
4
  }
10
5
  export type QueryOptionsReader = RunSQLOptions | (() => RunSQLOptions);
@@ -1,25 +1,7 @@
1
1
  "use strict";
2
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.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
23
5
  */
24
6
  Object.defineProperty(exports, "__esModule", { value: true });
25
7
  //# sourceMappingURL=run_sql_options.js.map
@@ -1,25 +1,7 @@
1
1
  "use strict";
2
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.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
23
5
  */
24
6
  Object.defineProperty(exports, "__esModule", { value: true });
25
7
  //# sourceMappingURL=runtime_types.js.map
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
7
5
  */
8
6
  Object.defineProperty(exports, "__esModule", { value: true });
9
7
  exports.cellsToObjects = cellsToObjects;
package/dist/timing.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
7
5
  */
8
6
  Object.defineProperty(exports, "__esModule", { value: true });
9
7
  exports.Timer = void 0;
package/dist/to_stable.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
7
5
  */
8
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
7
  if (k2 === undefined) k2 = k;
@@ -50,7 +48,6 @@ const model_1 = require("./model");
50
48
  const annotation_1 = require("./api/foundation/annotation");
51
49
  const malloy_tag_1 = require("@malloydata/malloy-tag");
52
50
  function sourceDefToSourceInfo(sourceDef) {
53
- var _a;
54
51
  const parameters = sourceDef.parameters && Object.entries(sourceDef.parameters).length > 0
55
52
  ? Object.entries(sourceDef.parameters).map(([name, parameter]) => {
56
53
  if ((0, model_1.isAtomic)(parameter)) {
@@ -73,7 +70,7 @@ function sourceDefToSourceInfo(sourceDef) {
73
70
  })
74
71
  : undefined;
75
72
  const sourceInfo = {
76
- name: (_a = sourceDef.as) !== null && _a !== void 0 ? _a : sourceDef.name,
73
+ name: (0, model_1.activeName)(sourceDef),
77
74
  schema: {
78
75
  fields: convertFieldInfos(sourceDef, sourceDef.fields),
79
76
  },
@@ -183,7 +180,6 @@ function toStableAnnotations(annot) {
183
180
  return new annotation_1.Annotations(annot).texts().map(value => ({ value }));
184
181
  }
185
182
  function convertFieldInfos(source, fields) {
186
- var _a, _b, _c;
187
183
  const result = [];
188
184
  for (const field of fields) {
189
185
  const isPublic = field.accessModifier === undefined;
@@ -202,7 +198,7 @@ function convertFieldInfos(source, fields) {
202
198
  ];
203
199
  const fieldInfo = {
204
200
  kind: 'view',
205
- name: (_a = field.as) !== null && _a !== void 0 ? _a : field.name,
201
+ name: (0, model_1.activeName)(field),
206
202
  annotations: fieldAnnotations.length > 0 ? fieldAnnotations : undefined,
207
203
  schema: { fields: convertFieldInfos(outputStruct, outputStruct.fields) },
208
204
  };
@@ -232,7 +228,7 @@ function convertFieldInfos(source, fields) {
232
228
  ];
233
229
  const fieldInfo = {
234
230
  kind: aggregate ? 'measure' : 'dimension',
235
- name: (_b = field.as) !== null && _b !== void 0 ? _b : field.name,
231
+ name: (0, model_1.activeName)(field),
236
232
  type: typeDefToType(field),
237
233
  annotations: fieldAnnotations.length > 0 ? fieldAnnotations : undefined,
238
234
  };
@@ -241,7 +237,7 @@ function convertFieldInfos(source, fields) {
241
237
  else if ((0, model_1.isJoinedSource)(field)) {
242
238
  const fieldInfo = {
243
239
  kind: 'join',
244
- name: (_c = field.as) !== null && _c !== void 0 ? _c : field.name,
240
+ name: (0, model_1.activeName)(field),
245
241
  annotations,
246
242
  schema: {
247
243
  fields: convertFieldInfos(field, field.fields),
@@ -330,7 +326,7 @@ function identifierCode(name) {
330
326
  return `\`${escapeIdentifier(name)}\``;
331
327
  }
332
328
  function getResultStructMetadataAnnotation(field, resultMetadata) {
333
- var _a, _b;
329
+ var _a;
334
330
  const tag = malloy_tag_1.Tag.withPrefix('#(malloy) ');
335
331
  let hasAny = false;
336
332
  if (resultMetadata.limit !== undefined) {
@@ -349,9 +345,9 @@ function getResultStructMetadataAnnotation(field, resultMetadata) {
349
345
  for (let i = 0; i < resultMetadata.orderBy.length; i++) {
350
346
  const orderBy = resultMetadata.orderBy[i];
351
347
  const orderByField = typeof orderBy.field === 'number'
352
- ? ((_a = field.fields[orderBy.field - 1].as) !== null && _a !== void 0 ? _a : field.fields[orderBy.field - 1].name)
348
+ ? (0, model_1.activeName)(field.fields[orderBy.field - 1])
353
349
  : orderBy.field;
354
- const direction = (_b = orderBy.dir) !== null && _b !== void 0 ? _b : null;
350
+ const direction = (_a = orderBy.dir) !== null && _a !== void 0 ? _a : null;
355
351
  tag.set(['ordered_by', i, orderByField], direction);
356
352
  }
357
353
  hasAny = true;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const MALLOY_VERSION = "0.0.403";
1
+ export declare const MALLOY_VERSION = "0.0.405";
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MALLOY_VERSION = void 0;
4
4
  // generated with 'generate-version-file' script; do not edit manually
5
- exports.MALLOY_VERSION = '0.0.403';
5
+ exports.MALLOY_VERSION = '0.0.405';
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/malloy",
3
- "version": "0.0.403",
3
+ "version": "0.0.405",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./dist/index.js",
@@ -51,9 +51,9 @@
51
51
  "generate-version-file": "VERSION=$(npm pkg get version --workspaces=false | tr -d \\\")\necho \"// generated with 'generate-version-file' script; do not edit manually\\nexport const MALLOY_VERSION = '$VERSION';\" > src/version.ts"
52
52
  },
53
53
  "dependencies": {
54
- "@malloydata/malloy-filter": "0.0.403",
55
- "@malloydata/malloy-interfaces": "0.0.403",
56
- "@malloydata/malloy-tag": "0.0.403",
54
+ "@malloydata/malloy-filter": "0.0.405",
55
+ "@malloydata/malloy-interfaces": "0.0.405",
56
+ "@malloydata/malloy-tag": "0.0.405",
57
57
  "@noble/hashes": "^1.8.0",
58
58
  "antlr4ts": "^0.5.0-alpha.4",
59
59
  "assert": "^2.0.0",
@@ -1,5 +0,0 @@
1
- import type { CommonTokenStream } from 'antlr4ts';
2
- import type { MalloyTranslation } from '../parse-malloy';
3
- import type { AnnotationsDef } from '../../model/malloy_types';
4
- import type { MalloyParseInfo } from '../malloy-parse-info';
5
- export declare function walkForModelAnnotation(forParse: MalloyTranslation, tokens: CommonTokenStream, parseInfo: MalloyParseInfo): AnnotationsDef;
@@ -1,50 +0,0 @@
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.walkForModelAnnotation = walkForModelAnnotation;
26
- const ParseTreeWalker_1 = require("antlr4ts/tree/ParseTreeWalker");
27
- const parse_utils_1 = require("../parse-utils");
28
- class ModelAnnotationWalker {
29
- constructor(translator, tokens, parseInfo) {
30
- this.translator = translator;
31
- this.tokens = tokens;
32
- this.parseInfo = parseInfo;
33
- this.notes = [];
34
- }
35
- enterDocAnnotations(pcx) {
36
- for (const a of pcx.docAnnotation()) {
37
- this.notes.push((0, parse_utils_1.noteFromAnnotation)(a, this.parseInfo));
38
- }
39
- }
40
- get annotations() {
41
- return { notes: this.notes };
42
- }
43
- }
44
- function walkForModelAnnotation(forParse, tokens, parseInfo) {
45
- const finder = new ModelAnnotationWalker(forParse, tokens, parseInfo);
46
- const listener = finder;
47
- ParseTreeWalker_1.ParseTreeWalker.DEFAULT.walk(listener, parseInfo.root);
48
- return finder.annotations;
49
- }
50
- //# sourceMappingURL=model-annotation-walker.js.map