@malloydata/malloy 0.0.404 → 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 (287) 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 +106 -31
  9. package/dist/api/foundation/runtime.js +9 -19
  10. package/dist/api/foundation/taggable.d.ts +5 -0
  11. package/dist/api/foundation/types.d.ts +15 -0
  12. package/dist/api/index.js +4 -6
  13. package/dist/api/sessioned.js +2 -4
  14. package/dist/api/stateless.js +2 -4
  15. package/dist/api/util.js +2 -4
  16. package/dist/connection/base_connection.js +2 -4
  17. package/dist/connection/types.d.ts +1 -3
  18. package/dist/connection_utils.js +2 -20
  19. package/dist/dialect/dialect.js +2 -20
  20. package/dist/dialect/dialect_map.js +2 -20
  21. package/dist/dialect/duckdb/dialect_functions.js +2 -4
  22. package/dist/dialect/duckdb/duckdb.js +2 -20
  23. package/dist/dialect/duckdb/function_overrides.js +2 -4
  24. package/dist/dialect/duckdb/index.js +2 -20
  25. package/dist/dialect/duckdb/table-path-parser.js +4 -4
  26. package/dist/dialect/functions/index.js +2 -20
  27. package/dist/dialect/functions/malloy_standard_functions.js +2 -4
  28. package/dist/dialect/functions/util.js +2 -21
  29. package/dist/dialect/index.js +2 -20
  30. package/dist/dialect/mysql/dialect_functions.js +2 -4
  31. package/dist/dialect/mysql/function_overrides.js +2 -4
  32. package/dist/dialect/mysql/index.js +2 -4
  33. package/dist/dialect/mysql/mysql.js +2 -20
  34. package/dist/dialect/pg_impl.js +2 -4
  35. package/dist/dialect/postgres/dialect_functions.js +2 -4
  36. package/dist/dialect/postgres/function_overrides.js +2 -4
  37. package/dist/dialect/postgres/index.js +2 -20
  38. package/dist/dialect/postgres/postgres.js +2 -20
  39. package/dist/dialect/snowflake/dialect_functions.js +2 -4
  40. package/dist/dialect/snowflake/function_overrides.js +2 -4
  41. package/dist/dialect/snowflake/index.js +2 -20
  42. package/dist/dialect/snowflake/snowflake.js +2 -20
  43. package/dist/dialect/standardsql/dialect_functions.js +2 -4
  44. package/dist/dialect/standardsql/function_overrides.js +2 -4
  45. package/dist/dialect/standardsql/index.js +2 -20
  46. package/dist/dialect/standardsql/standardsql.js +2 -20
  47. package/dist/dialect/tiny_parser.js +2 -4
  48. package/dist/dialect/trino/dialect_functions.js +2 -4
  49. package/dist/dialect/trino/function_overrides.js +2 -4
  50. package/dist/dialect/trino/index.js +2 -20
  51. package/dist/dialect/trino/trino.js +2 -20
  52. package/dist/index.js +4 -22
  53. package/dist/lang/ast/ast-utils.js +2 -20
  54. package/dist/lang/ast/error-factory.js +2 -20
  55. package/dist/lang/ast/expressions/apply.js +2 -20
  56. package/dist/lang/ast/expressions/binary-boolean.js +2 -20
  57. package/dist/lang/ast/expressions/binary-numeric.js +2 -20
  58. package/dist/lang/ast/expressions/boolean.js +2 -20
  59. package/dist/lang/ast/expressions/case.js +2 -4
  60. package/dist/lang/ast/expressions/constant-expression.js +2 -20
  61. package/dist/lang/ast/expressions/expr-add-sub.js +2 -20
  62. package/dist/lang/ast/expressions/expr-aggregate-function.js +2 -20
  63. package/dist/lang/ast/expressions/expr-alternation-tree.js +2 -20
  64. package/dist/lang/ast/expressions/expr-array-literal.js +2 -4
  65. package/dist/lang/ast/expressions/expr-asymmetric.js +2 -20
  66. package/dist/lang/ast/expressions/expr-avg.js +2 -20
  67. package/dist/lang/ast/expressions/expr-cast.js +2 -20
  68. package/dist/lang/ast/expressions/expr-coalesce.js +2 -20
  69. package/dist/lang/ast/expressions/expr-compare.js +2 -20
  70. package/dist/lang/ast/expressions/expr-count-distinct.js +2 -20
  71. package/dist/lang/ast/expressions/expr-count.js +2 -20
  72. package/dist/lang/ast/expressions/expr-filter-expr.js +2 -4
  73. package/dist/lang/ast/expressions/expr-func.js +2 -20
  74. package/dist/lang/ast/expressions/expr-granular-time.js +2 -20
  75. package/dist/lang/ast/expressions/expr-id-reference.js +2 -20
  76. package/dist/lang/ast/expressions/expr-logical-op.js +2 -20
  77. package/dist/lang/ast/expressions/expr-max.js +2 -20
  78. package/dist/lang/ast/expressions/expr-min.js +2 -20
  79. package/dist/lang/ast/expressions/expr-minus.js +2 -20
  80. package/dist/lang/ast/expressions/expr-mul-div.js +2 -20
  81. package/dist/lang/ast/expressions/expr-not.js +2 -20
  82. package/dist/lang/ast/expressions/expr-now.js +2 -20
  83. package/dist/lang/ast/expressions/expr-null.js +2 -20
  84. package/dist/lang/ast/expressions/expr-number.js +2 -20
  85. package/dist/lang/ast/expressions/expr-parens.js +2 -20
  86. package/dist/lang/ast/expressions/expr-props.js +2 -20
  87. package/dist/lang/ast/expressions/expr-record-literal.js +2 -4
  88. package/dist/lang/ast/expressions/expr-regex.js +2 -20
  89. package/dist/lang/ast/expressions/expr-string.js +4 -0
  90. package/dist/lang/ast/expressions/expr-sum.js +2 -20
  91. package/dist/lang/ast/expressions/expr-time-extract.js +2 -20
  92. package/dist/lang/ast/expressions/expr-time.js +2 -20
  93. package/dist/lang/ast/expressions/expr-ungroup.js +2 -20
  94. package/dist/lang/ast/expressions/for-range.js +2 -20
  95. package/dist/lang/ast/expressions/function-ordering.js +2 -20
  96. package/dist/lang/ast/expressions/grouped_by.js +2 -4
  97. package/dist/lang/ast/expressions/partial-compare.js +2 -20
  98. package/dist/lang/ast/expressions/partition_by.js +2 -20
  99. package/dist/lang/ast/expressions/pick-when.js +2 -20
  100. package/dist/lang/ast/expressions/range.js +2 -20
  101. package/dist/lang/ast/expressions/time-frame.js +2 -20
  102. package/dist/lang/ast/expressions/time-literal.js +2 -20
  103. package/dist/lang/ast/expressions/unary.js +2 -20
  104. package/dist/lang/ast/field-space/ast-view-field.js +2 -20
  105. package/dist/lang/ast/field-space/column-space-field.js +2 -20
  106. package/dist/lang/ast/field-space/def-space.js +2 -4
  107. package/dist/lang/ast/field-space/dynamic-space.js +2 -20
  108. package/dist/lang/ast/field-space/include-utils.js +2 -4
  109. package/dist/lang/ast/field-space/index-field-space.js +2 -20
  110. package/dist/lang/ast/field-space/ir-view-field.js +2 -20
  111. package/dist/lang/ast/field-space/join-space-field.js +2 -20
  112. package/dist/lang/ast/field-space/parameter-space.js +2 -4
  113. package/dist/lang/ast/field-space/passthrough-space.js +2 -4
  114. package/dist/lang/ast/field-space/permissive-space.js +2 -4
  115. package/dist/lang/ast/field-space/project-field-space.js +2 -20
  116. package/dist/lang/ast/field-space/query-input-space.js +2 -20
  117. package/dist/lang/ast/field-space/query-spaces.js +2 -20
  118. package/dist/lang/ast/field-space/reference-field.js +5 -21
  119. package/dist/lang/ast/field-space/refine-from-space-field.js +2 -4
  120. package/dist/lang/ast/field-space/refined-space.js +2 -20
  121. package/dist/lang/ast/field-space/rename-space-field.js +2 -20
  122. package/dist/lang/ast/field-space/static-space.js +2 -20
  123. package/dist/lang/ast/field-space/struct-space-field-base.js +2 -20
  124. package/dist/lang/ast/field-space/view-field.js +2 -20
  125. package/dist/lang/ast/index.js +2 -20
  126. package/dist/lang/ast/parameters/argument.js +2 -4
  127. package/dist/lang/ast/parameters/has-parameter.js +2 -20
  128. package/dist/lang/ast/query-builders/index-builder.js +2 -20
  129. package/dist/lang/ast/query-builders/partial-builder.js +4 -0
  130. package/dist/lang/ast/query-builders/project-builder.js +2 -20
  131. package/dist/lang/ast/query-builders/reduce-builder.js +2 -20
  132. package/dist/lang/ast/query-elements/anonymous-query.js +3 -21
  133. package/dist/lang/ast/query-elements/query-arrow.js +2 -20
  134. package/dist/lang/ast/query-elements/query-base.js +2 -20
  135. package/dist/lang/ast/query-elements/query-head-struct.js +2 -20
  136. package/dist/lang/ast/query-elements/query-raw.js +2 -20
  137. package/dist/lang/ast/query-elements/query-reference.js +2 -20
  138. package/dist/lang/ast/query-elements/query-refine.js +2 -20
  139. package/dist/lang/ast/query-items/field-declaration.js +3 -21
  140. package/dist/lang/ast/query-items/field-references.js +2 -20
  141. package/dist/lang/ast/query-items/typecheck_utils.js +2 -20
  142. package/dist/lang/ast/query-properties/aggregate.js +2 -20
  143. package/dist/lang/ast/query-properties/calculate.js +2 -20
  144. package/dist/lang/ast/query-properties/declare-fields.js +2 -20
  145. package/dist/lang/ast/query-properties/drill.js +2 -4
  146. package/dist/lang/ast/query-properties/extend.js +2 -20
  147. package/dist/lang/ast/query-properties/filters.js +2 -20
  148. package/dist/lang/ast/query-properties/group-by.js +2 -20
  149. package/dist/lang/ast/query-properties/indexing.js +2 -20
  150. package/dist/lang/ast/query-properties/limit.js +2 -20
  151. package/dist/lang/ast/query-properties/nest.js +6 -21
  152. package/dist/lang/ast/query-properties/nests.js +2 -20
  153. package/dist/lang/ast/query-properties/ordering.js +2 -20
  154. package/dist/lang/ast/query-properties/project-statement.js +2 -20
  155. package/dist/lang/ast/query-properties/qop-desc.js +2 -20
  156. package/dist/lang/ast/query-properties/sampling.js +2 -20
  157. package/dist/lang/ast/query-utils.js +2 -20
  158. package/dist/lang/ast/source-elements/composite-source.js +2 -4
  159. package/dist/lang/ast/source-elements/named-source.js +2 -23
  160. package/dist/lang/ast/source-elements/query-source.js +2 -22
  161. package/dist/lang/ast/source-elements/refined-source.js +2 -22
  162. package/dist/lang/ast/source-elements/source.js +2 -20
  163. package/dist/lang/ast/source-elements/sql-source.js +2 -25
  164. package/dist/lang/ast/source-elements/table-source.js +3 -22
  165. package/dist/lang/ast/source-elements/virtual-source.js +1 -2
  166. package/dist/lang/ast/source-properties/dimensions.js +2 -20
  167. package/dist/lang/ast/source-properties/field-list-edit.js +2 -20
  168. package/dist/lang/ast/source-properties/join.js +4 -26
  169. package/dist/lang/ast/source-properties/measures.js +2 -20
  170. package/dist/lang/ast/source-properties/primary-key.js +2 -20
  171. package/dist/lang/ast/source-properties/renames.js +3 -21
  172. package/dist/lang/ast/source-properties/timezone-statement.js +2 -20
  173. package/dist/lang/ast/source-properties/user-type-shape.js +9 -4
  174. package/dist/lang/ast/source-properties/view-field-declaration.js +6 -21
  175. package/dist/lang/ast/source-properties/views.js +2 -20
  176. package/dist/lang/ast/source-query-elements/include-item.js +2 -4
  177. package/dist/lang/ast/source-query-elements/source-query-element.js +2 -20
  178. package/dist/lang/ast/source-query-elements/sq-arrow.js +2 -20
  179. package/dist/lang/ast/source-query-elements/sq-compose.js +2 -4
  180. package/dist/lang/ast/source-query-elements/sq-extend.js +2 -20
  181. package/dist/lang/ast/source-query-elements/sq-reference.js +2 -20
  182. package/dist/lang/ast/source-query-elements/sq-refine.js +2 -20
  183. package/dist/lang/ast/source-query-elements/sq-source.js +2 -20
  184. package/dist/lang/ast/sql-elements/sql-string.js +2 -20
  185. package/dist/lang/ast/statements/define-given.js +2 -2
  186. package/dist/lang/ast/statements/define-query.js +3 -21
  187. package/dist/lang/ast/statements/define-source.js +7 -22
  188. package/dist/lang/ast/statements/define-user-type.js +1 -1
  189. package/dist/lang/ast/statements/import-statement.js +7 -20
  190. package/dist/lang/ast/time-utils.js +2 -20
  191. package/dist/lang/ast/typedesc-utils.js +2 -20
  192. package/dist/lang/ast/types/annotation-elements.js +2 -20
  193. package/dist/lang/ast/types/binary_operators.js +2 -4
  194. package/dist/lang/ast/types/definition-list.js +2 -20
  195. package/dist/lang/ast/types/dialect-name-space.js +2 -4
  196. package/dist/lang/ast/types/document-compile-result.js +2 -20
  197. package/dist/lang/ast/types/expr-result.js +2 -20
  198. package/dist/lang/ast/types/expr-value.js +2 -20
  199. package/dist/lang/ast/types/expression-def.js +2 -20
  200. package/dist/lang/ast/types/field-collection-member.js +2 -20
  201. package/dist/lang/ast/types/field-prop-statement.js +2 -20
  202. package/dist/lang/ast/types/field-space.js +2 -20
  203. package/dist/lang/ast/types/global-name-space.js +2 -20
  204. package/dist/lang/ast/types/granular-result.js +2 -20
  205. package/dist/lang/ast/types/literal.d.ts +1 -1
  206. package/dist/lang/ast/types/literal.js +2 -4
  207. package/dist/lang/ast/types/lookup-result.js +2 -20
  208. package/dist/lang/ast/types/malloy-element.d.ts +27 -4
  209. package/dist/lang/ast/types/malloy-element.js +54 -70
  210. package/dist/lang/ast/types/model-entry.js +2 -20
  211. package/dist/lang/ast/types/name-space.js +2 -20
  212. package/dist/lang/ast/types/noteable.js +2 -20
  213. package/dist/lang/ast/types/op-desc.js +2 -20
  214. package/dist/lang/ast/types/pipeline-comp.js +2 -20
  215. package/dist/lang/ast/types/query-builder.js +2 -20
  216. package/dist/lang/ast/types/query-comp.js +2 -20
  217. package/dist/lang/ast/types/query-element.js +2 -20
  218. package/dist/lang/ast/types/query-extend-property.js +2 -20
  219. package/dist/lang/ast/types/query-item.js +2 -20
  220. package/dist/lang/ast/types/query-property-interface.js +2 -20
  221. package/dist/lang/ast/types/query-property.js +2 -20
  222. package/dist/lang/ast/types/source-desc.js +2 -20
  223. package/dist/lang/ast/types/source-property.js +2 -20
  224. package/dist/lang/ast/types/space-entry.js +2 -20
  225. package/dist/lang/ast/types/space-field.js +2 -20
  226. package/dist/lang/ast/types/space-param.js +2 -20
  227. package/dist/lang/ast/types/time-result.js +2 -20
  228. package/dist/lang/ast/view-elements/qop-desc-view.js +2 -20
  229. package/dist/lang/ast/view-elements/reference-view.js +2 -20
  230. package/dist/lang/ast/view-elements/refine-utils.js +2 -20
  231. package/dist/lang/ast/view-elements/view-arrow.js +2 -20
  232. package/dist/lang/ast/view-elements/view-refine.js +2 -20
  233. package/dist/lang/ast/view-elements/view.js +2 -20
  234. package/dist/lang/composite-source-utils.js +2 -4
  235. package/dist/lang/field-utils.js +2 -20
  236. package/dist/lang/index.js +2 -20
  237. package/dist/lang/malloy-parse-info.js +2 -20
  238. package/dist/lang/malloy-to-ast.d.ts +1 -1
  239. package/dist/lang/malloy-to-ast.js +2 -21
  240. package/dist/lang/malloy-to-stable-query.js +2 -4
  241. package/dist/lang/parse-log.js +2 -20
  242. package/dist/lang/parse-malloy.d.ts +1 -9
  243. package/dist/lang/parse-malloy.js +8 -50
  244. package/dist/lang/parse-tree-walkers/document-completion-walker.js +2 -20
  245. package/dist/lang/parse-tree-walkers/document-help-context-walker.js +2 -20
  246. package/dist/lang/parse-tree-walkers/document-symbol-walker.js +2 -20
  247. package/dist/lang/parse-tree-walkers/explore-query-walker.js +2 -20
  248. package/dist/lang/parse-tree-walkers/find-external-references.js +2 -20
  249. package/dist/lang/parse-tree-walkers/find-table-path-walker.js +2 -20
  250. package/dist/lang/parse-utils.js +2 -20
  251. package/dist/lang/reference-list.js +2 -20
  252. package/dist/lang/run-malloy-parser.js +2 -4
  253. package/dist/lang/syntax-errors/custom-error-messages.js +2 -4
  254. package/dist/lang/syntax-errors/malloy-error-strategy.js +2 -4
  255. package/dist/lang/syntax-errors/malloy-parser-error-listener.js +2 -4
  256. package/dist/lang/test/expr-to-str.js +2 -4
  257. package/dist/lang/test/parse-expects.js +2 -20
  258. package/dist/lang/test/test-translator.js +4 -25
  259. package/dist/lang/translate-response.d.ts +1 -5
  260. package/dist/lang/translate-response.js +2 -20
  261. package/dist/lang/utils.js +2 -20
  262. package/dist/lang/zone.js +2 -20
  263. package/dist/model/annotation_utils.d.ts +37 -0
  264. package/dist/model/annotation_utils.js +85 -0
  265. package/dist/model/filter_compilers.js +2 -4
  266. package/dist/model/index.d.ts +2 -1
  267. package/dist/model/index.js +6 -21
  268. package/dist/model/malloy_types.d.ts +36 -7
  269. package/dist/model/malloy_types.js +2 -21
  270. package/dist/model/query_node.d.ts +0 -3
  271. package/dist/model/query_node.js +0 -10
  272. package/dist/model/query_query.js +2 -16
  273. package/dist/model/source_def_utils.js +0 -2
  274. package/dist/model/sql_block.js +2 -20
  275. package/dist/model/utils.d.ts +9 -2
  276. package/dist/model/utils.js +15 -21
  277. package/dist/run_sql_options.d.ts +0 -5
  278. package/dist/run_sql_options.js +2 -20
  279. package/dist/runtime_types.js +2 -20
  280. package/dist/test/cellsToObject.js +2 -4
  281. package/dist/timing.js +2 -4
  282. package/dist/to_stable.js +2 -4
  283. package/dist/version.d.ts +1 -1
  284. package/dist/version.js +1 -1
  285. package/package.json +4 -4
  286. package/dist/lang/parse-tree-walkers/model-annotation-walker.d.ts +0 -5
  287. package/dist/lang/parse-tree-walkers/model-annotation-walker.js +0 -50
@@ -671,7 +671,6 @@ export interface Query extends Pipeline, Filtered {
671
671
  name?: string;
672
672
  structRef: StructRef;
673
673
  sourceArguments?: SafeRecord<Argument>;
674
- modelAnnotations?: AnnotationsDef;
675
674
  compositeResolvedSourceDef?: SourceDef;
676
675
  givenUsage?: GivenUsage;
677
676
  }
@@ -839,7 +838,6 @@ export interface TurtleDefPlusFilters extends TurtleDef, Filtered {
839
838
  }
840
839
  interface StructDefBase extends HasLocation, NamedObject, HasAnnotations {
841
840
  type: string;
842
- modelAnnotations?: ModelAnnotationsDef;
843
841
  fields: FieldDef[];
844
842
  /** Marker for error placeholder structs created by ErrorFactory */
845
843
  errorFactory?: boolean;
@@ -886,6 +884,13 @@ export type SourceID = string;
886
884
  export type GivenID = string;
887
885
  /** Hash of (connectionDigest, sql) - uniquely identifies a built artifact */
888
886
  export type BuildID = string;
887
+ /**
888
+ * Identifies the model a definition came from. Either a real model URL or a
889
+ * synthetic `"internal <uuid>"` for URL-less models. The space makes the
890
+ * synthetic form an illegal URL, so it can never collide with a real model
891
+ * URL. Created with `mkModelID`.
892
+ */
893
+ export type ModelID = string;
889
894
  /**
890
895
  * Reference to a source in modelDef.contents by name.
891
896
  * Used in sourceRegistry to avoid duplicating SourceDefs that are in the namespace.
@@ -1115,6 +1120,7 @@ export interface DependencyTree {
1115
1120
  /** Result of parsing a model file */
1116
1121
  export interface ModelDef {
1117
1122
  name: string;
1123
+ modelID: ModelID;
1118
1124
  exports: string[];
1119
1125
  contents: SafeRecord<NamedModelObject>;
1120
1126
  /**
@@ -1125,7 +1131,17 @@ export interface ModelDef {
1125
1131
  */
1126
1132
  sourceRegistry: Record<SourceID, SourceRegistryValue>;
1127
1133
  givens?: Record<GivenID, Given>;
1128
- annotations?: ModelAnnotationsDef;
1134
+ /**
1135
+ * Model (`##`) annotations of every model involved in this compile, keyed by
1136
+ * {@link ModelID} — this model plus everything it imported or extended (the
1137
+ * whole closure, so any model's annotations are answerable from this
1138
+ * `ModelDef` alone, even after it crosses the wire). Each entry carries that
1139
+ * model's own `##` (`ownNotes`) and its direct import/extend predecessors
1140
+ * (`inheritsFrom`, the DAG of edges, extend-base prepended as `import₀`).
1141
+ * {@link getModelAnnotations} folds `inheritsFrom` from any model to produce
1142
+ * that model's deduped, ordered annotation set.
1143
+ */
1144
+ modelAnnotations: Record<ModelID, ModelAnnotationEntry>;
1129
1145
  queryList: Query[];
1130
1146
  dependencies: DependencyTree;
1131
1147
  references?: DocumentReference[];
@@ -1136,7 +1152,16 @@ export type NamedSourceDefs = SafeRecord<SourceDef>;
1136
1152
  export type NamedModelObjects = SafeRecord<NamedModelObject>;
1137
1153
  /** Bundle of source annotations attached to one object: the `notes` and
1138
1154
  * `blockNotes` written on it, plus the bundle from the spiritual parent
1139
- * via `inherits`. The IR shape paired with the `Annotations` view class. */
1155
+ * via `inherits`. The IR shape paired with the `Annotations` view class.
1156
+ *
1157
+ * This is the one annotation bundle type for both `#` object annotations (on
1158
+ * fields, views, sources, queries, …) and `##` model annotations. Object
1159
+ * annotations carry no model provenance: `##` is model-level, resolved by
1160
+ * folding {@link ModelDef.modelAnnotations} keyed by {@link ModelID}, not by
1161
+ * per-object stamping. A model's own `##` is just an `AnnotationsDef` whose
1162
+ * `inherits` chain is unused as stored (`ModelAnnotationEntry.ownNotes`) and,
1163
+ * when returned by {@link getModelAnnotations}, *is* the folded order (local at the
1164
+ * top) so the `Annotations` view / `notesInOrder` read it with no new code. */
1140
1165
  export interface AnnotationsDef {
1141
1166
  inherits?: AnnotationsDef;
1142
1167
  blockNotes?: Note[];
@@ -1155,9 +1180,13 @@ export interface Note {
1155
1180
  */
1156
1181
  indentStripped?: number;
1157
1182
  }
1158
- /** Annotations bundle with a uuid to make it easier to stream. */
1159
- export interface ModelAnnotationsDef extends AnnotationsDef {
1160
- id: string;
1183
+ /** One model's entry in {@link ModelDef.modelAnnotations}: its own `##`
1184
+ * (`ownNotes`) plus its **direct** import/extend predecessors (`inheritsFrom`),
1185
+ * in fold order with the extend-base prepended as `import₀`. Direct edges only
1186
+ * — the lineage DAG, not the resolved order; {@link getModelAnnotations} resolves. */
1187
+ export interface ModelAnnotationEntry {
1188
+ ownNotes: AnnotationsDef;
1189
+ inheritsFrom: ModelID[];
1161
1190
  }
1162
1191
  export type QueryScalar = string | boolean | number | bigint | Date | Buffer | null;
1163
1192
  /** One value in one column of returned data. */
@@ -1,26 +1,7 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright 2023 Google LLC
4
- * Copyright (c) Meta Platforms, Inc. and affiliates.
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining
7
- * a copy of this software and associated documentation files
8
- * (the "Software"), to deal in the Software without restriction,
9
- * including without limitation the rights to use, copy, modify, merge,
10
- * publish, distribute, sublicense, and/or sell copies of the Software,
11
- * and to permit persons to whom the Software is furnished to do so,
12
- * subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be
15
- * included in all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
24
5
  */
25
6
  Object.defineProperty(exports, "__esModule", { value: true });
26
7
  exports.TD = exports.ValueType = void 0;
@@ -1,6 +1,5 @@
1
1
  import type { FieldDef, BooleanFieldDef, DateFieldDef, DocumentLocation, StringFieldDef, JSONFieldDef, NumberFieldDef, ATimestampFieldDef, NativeUnsupportedFieldDef, JoinFieldDef, Argument, Given, GivenID, PrepareResultOptions, AtomicFieldDef, BasicAtomicDef, FilterCondition, RefToField, StructDef, TurtleDef, TurtleDefPlusFilters } from './malloy_types';
2
2
  import type { EventStream } from '../runtime_types';
3
- import type { Tag } from '@malloydata/malloy-tag';
4
3
  import type { Dialect } from '../dialect';
5
4
  declare abstract class QueryNode {
6
5
  readonly referenceId: string;
@@ -91,8 +90,6 @@ export declare class QueryStruct {
91
90
  constructor(structDef: StructDef, sourceArguments: Record<string, Argument> | undefined, parent: ParentQueryStruct | ParentQueryModel, prepareResultOptions: PrepareResultOptions);
92
91
  private static turtleFieldMaker;
93
92
  static registerTurtleFieldMaker(maker: (field: TurtleDef, parent: QueryStruct) => QueryField): void;
94
- private _modelTag;
95
- modelCompilerFlags(): Tag;
96
93
  protected findFirstDialect(): string;
97
94
  maybeEmitParameterizedSourceUsage(): void;
98
95
  private resolveParentParameterReferences;
@@ -14,7 +14,6 @@ exports.isBasicScalar = isBasicScalar;
14
14
  const uuid_1 = require("uuid");
15
15
  const malloy_compile_error_1 = require("./malloy_compile_error");
16
16
  const malloy_types_1 = require("./malloy_types");
17
- const annotation_1 = require("../api/foundation/annotation");
18
17
  const dialect_1 = require("../dialect");
19
18
  const utils_1 = require("./utils");
20
19
  class QueryNode {
@@ -179,7 +178,6 @@ class QueryStruct {
179
178
  this.sourceArguments = sourceArguments;
180
179
  this.prepareResultOptions = prepareResultOptions;
181
180
  this.nameMap = new Map();
182
- this._modelTag = undefined;
183
181
  this._arguments = undefined;
184
182
  if ('model' in parent) {
185
183
  this.model = parent.model;
@@ -203,14 +201,6 @@ class QueryStruct {
203
201
  static registerTurtleFieldMaker(maker) {
204
202
  QueryStruct.turtleFieldMaker = maker;
205
203
  }
206
- modelCompilerFlags() {
207
- if (this._modelTag === undefined) {
208
- const annotation = this.structDef.modelAnnotations;
209
- const { tag } = new annotation_1.Annotations(annotation).parseAsTag('!');
210
- this._modelTag = tag;
211
- }
212
- return this._modelTag;
213
- }
214
204
  findFirstDialect() {
215
205
  if ((0, malloy_types_1.isSourceDef)(this.structDef)) {
216
206
  return this.structDef.dialect;
@@ -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) {
@@ -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");
@@ -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;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const MALLOY_VERSION = "0.0.404";
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.404';
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.404",
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.404",
55
- "@malloydata/malloy-interfaces": "0.0.404",
56
- "@malloydata/malloy-tag": "0.0.404",
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