@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
@@ -5,6 +5,7 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.PreparedResult = exports.PreparedQuery = exports.Given = exports.PersistSource = exports.Model = exports.Reference = exports.ExploreField = exports.QueryField = exports.Query = exports.StringField = exports.UnsupportedField = exports.JSONField = exports.BooleanField = exports.NumberField = exports.TimestampField = exports.DateField = exports.AtomicField = exports.Explore = exports.JoinRelationship = exports.TimestampTimeframe = exports.DateTimeframe = exports.AtomicFieldType = exports.SourceRelationship = void 0;
8
+ exports.pseudoModelFor = pseudoModelFor;
8
9
  const model_1 = require("../../model");
9
10
  const utils_1 = require("../../model/utils");
10
11
  const dialect_1 = require("../../dialect");
@@ -22,6 +23,30 @@ function isSourceComponent(source) {
22
23
  source.type === 'sql_select' ||
23
24
  source.type === 'query_source');
24
25
  }
26
+ /**
27
+ * A synthetic single-source model for an `Explore` that has no real model in
28
+ * hand — the deserialization (`Explore.fromJSON`) and raw-SQL-block paths.
29
+ * Wraps just the one struct so SQL generation has something to compile
30
+ * against.
31
+ *
32
+ * `modelID` + `modelAnnotations` reconstitute the model-annotation closure:
33
+ * `fromJSON` passes the values captured by `toJSON` so a deserialized Explore
34
+ * folds its model annotations exactly as the live one did. The raw-SQL-block
35
+ * and default paths pass nothing and get an empty map (the honest answer for a
36
+ * genuinely detached struct). The default constant `modelID` (rather than
37
+ * `mkModelDef`'s random one) keeps `fromJSON(x.toJSON())` deep-equal to `x` for
38
+ * the no-annotations case.
39
+ */
40
+ const GENERATED_MODEL_ID = 'internal://generated-model';
41
+ function pseudoModelFor(structDef, modelID = GENERATED_MODEL_ID, modelAnnotations = {}) {
42
+ if (!(0, model_1.isSourceDef)(structDef)) {
43
+ throw new Error(`Cannot create pseudo model for struct type ${structDef.type}`);
44
+ }
45
+ const def = (0, utils_1.mkModelDef)('generated_model', modelID);
46
+ def.modelAnnotations = modelAnnotations;
47
+ def.contents[structDef.name] = structDef;
48
+ return def;
49
+ }
25
50
  // =============================================================================
26
51
  // Entity - Base class for Explore and Field types
27
52
  // =============================================================================
@@ -130,12 +155,20 @@ var JoinRelationship;
130
155
  // Explore
131
156
  // =============================================================================
132
157
  class Explore extends Entity {
133
- constructor(structDef, parentExplore, source) {
134
- super(structDef.as || structDef.name, parentExplore, source);
158
+ constructor(modelDef, structDef, parentExplore, source) {
159
+ super((0, model_1.activeName)(structDef), parentExplore, source);
160
+ this._ownerModelDef = modelDef;
135
161
  this._structDef = structDef;
136
162
  this._parentExplore = parentExplore;
137
163
  this.sourceExplore = source;
138
164
  }
165
+ /** The model this Explore was resolved in. For detached Explores
166
+ * (`fromJSON`, raw SQL block) this is a synthetic single-source model
167
+ * with no model annotations. Read by child fields to resolve their own
168
+ * model annotations. */
169
+ get _modelDef() {
170
+ return this._ownerModelDef;
171
+ }
139
172
  get source() {
140
173
  return this.sourceExplore;
141
174
  }
@@ -159,22 +192,29 @@ class Explore extends Entity {
159
192
  get annotations() {
160
193
  return new annotation_1.Annotations(this._structDef.annotations);
161
194
  }
195
+ /** The model annotations resolved for this object. */
196
+ get modelAnnotations() {
197
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this._ownerModelDef));
198
+ }
199
+ /**
200
+ * @deprecated Use `.modelAnnotations.parseAsTag(route)`.
201
+ */
162
202
  get modelTag() {
163
- this.parsedModelTag || (this.parsedModelTag = new annotation_1.Annotations(this._structDef.modelAnnotations).parseAsTag().tag);
203
+ this.parsedModelTag || (this.parsedModelTag = this.modelAnnotations.parseAsTag().tag);
164
204
  return this.parsedModelTag;
165
205
  }
166
206
  /**
167
207
  * @return The name of the entity.
168
208
  */
169
209
  get name() {
170
- return this.structDef.as || this.structDef.name;
210
+ return (0, model_1.activeName)(this.structDef);
171
211
  }
172
212
  getQueryByName(name) {
173
213
  const structRef = this.sourceStructDef;
174
214
  if (!structRef) {
175
215
  throw new Error(`Cannot get query by name from a struct of type ${this.structDef.type}`);
176
216
  }
177
- const view = structRef.fields.find(f => { var _a; return ((_a = f.as) !== null && _a !== void 0 ? _a : f.name) === name; });
217
+ const view = structRef.fields.find(f => (0, model_1.activeName)(f) === name);
178
218
  if (view === undefined) {
179
219
  throw new Error(`No such view named \`${name}\``);
180
220
  }
@@ -188,23 +228,15 @@ class Explore extends Entity {
188
228
  };
189
229
  return new PreparedQuery(internalQuery, this.getSingleExploreModel(), [], name);
190
230
  }
191
- get modelDef() {
192
- if (!(0, model_1.isSourceDef)(this.structDef)) {
193
- throw new Error(`Cannot create pseudo model for struct type ${this.structDef.type}`);
194
- }
195
- const def = (0, utils_1.mkModelDef)('generated_model');
196
- def.contents[this.structDef.name] = this.structDef;
197
- return def;
198
- }
199
231
  getSingleExploreModel() {
200
- return new Model(this.modelDef, [], []);
232
+ return new Model(this._ownerModelDef, [], []);
201
233
  }
202
234
  get fieldMap() {
203
235
  var _a;
204
236
  if (this._fieldMap === undefined) {
205
237
  const sourceFields = ((_a = this.source) === null || _a === void 0 ? void 0 : _a.fieldMap) || new Map();
206
238
  this._fieldMap = new Map(this.structDef.fields.map(fieldDef => {
207
- const name = fieldDef.as || fieldDef.name;
239
+ const name = (0, model_1.activeName)(fieldDef);
208
240
  const sourceField = sourceFields.get(fieldDef.name);
209
241
  if ((0, model_1.isJoined)(fieldDef)) {
210
242
  return [name, new ExploreField(fieldDef, this, sourceField)];
@@ -336,6 +368,8 @@ class Explore extends Entity {
336
368
  var _a, _b;
337
369
  return {
338
370
  _structDef: this._structDef,
371
+ modelID: this._ownerModelDef.modelID,
372
+ modelAnnotations: this._ownerModelDef.modelAnnotations,
339
373
  sourceExplore: (_a = this.sourceExplore) === null || _a === void 0 ? void 0 : _a.toJSON(),
340
374
  _parentExplore: (_b = this._parentExplore) === null || _b === void 0 ? void 0 : _b.toJSON(),
341
375
  };
@@ -347,7 +381,7 @@ class Explore extends Entity {
347
381
  const sourceExplore = main_explore.sourceExplore !== undefined
348
382
  ? Explore.fromJSON(main_explore.sourceExplore)
349
383
  : undefined;
350
- return new Explore(main_explore._structDef, parentExplore, sourceExplore);
384
+ return new Explore(pseudoModelFor(main_explore._structDef, main_explore.modelID, main_explore.modelAnnotations), main_explore._structDef, parentExplore, sourceExplore);
351
385
  }
352
386
  get location() {
353
387
  return this.structDef.location;
@@ -431,7 +465,7 @@ exports.Explore = Explore;
431
465
  // =============================================================================
432
466
  class AtomicField extends Entity {
433
467
  constructor(fieldTypeDef, parent, source) {
434
- super(fieldTypeDef.as || fieldTypeDef.name, parent, source);
468
+ super((0, model_1.activeName)(fieldTypeDef), parent, source);
435
469
  this.fieldTypeDef = fieldTypeDef;
436
470
  this.parent = parent;
437
471
  }
@@ -475,6 +509,10 @@ class AtomicField extends Entity {
475
509
  get annotations() {
476
510
  return new annotation_1.Annotations(this.fieldTypeDef.annotations);
477
511
  }
512
+ /** The model annotations resolved for this field, via its parent. */
513
+ get modelAnnotations() {
514
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this.parent._modelDef));
515
+ }
478
516
  isIntrinsic() {
479
517
  return (0, model_1.fieldIsIntrinsic)(this.fieldTypeDef);
480
518
  }
@@ -651,7 +689,7 @@ exports.StringField = StringField;
651
689
  // =============================================================================
652
690
  class Query extends Entity {
653
691
  constructor(turtleDef, parent, source) {
654
- super(turtleDef.as || turtleDef.name, parent, source);
692
+ super((0, model_1.activeName)(turtleDef), parent, source);
655
693
  this.turtleDef = turtleDef;
656
694
  }
657
695
  get source() {
@@ -674,6 +712,13 @@ class Query extends Entity {
674
712
  get annotations() {
675
713
  return new annotation_1.Annotations(this.turtleDef.annotations);
676
714
  }
715
+ /** The model annotations resolved for this view, via its parent
716
+ * explore. A bare `Query` with no parent has none. */
717
+ get modelAnnotations() {
718
+ var _a;
719
+ const modelDef = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._modelDef;
720
+ return new annotation_1.Annotations(modelDef && (0, model_1.getModelAnnotations)(modelDef));
721
+ }
677
722
  }
678
723
  exports.Query = Query;
679
724
  class QueryField extends Query {
@@ -710,7 +755,7 @@ exports.QueryField = QueryField;
710
755
  // =============================================================================
711
756
  class ExploreField extends Explore {
712
757
  constructor(structDef, parentExplore, source) {
713
- super(structDef, parentExplore, source);
758
+ super(parentExplore._modelDef, structDef, parentExplore, source);
714
759
  this._parentExplore = parentExplore;
715
760
  }
716
761
  get joinRelationship() {
@@ -874,21 +919,30 @@ class Model {
874
919
  continue;
875
920
  const decl = givens[entry.id];
876
921
  if (decl && !decl.inline) {
877
- out.set(surfaceName, new Given(surfaceName, entry.id, decl));
922
+ out.set(surfaceName, new Given(surfaceName, entry.id, decl, this.modelDef));
878
923
  }
879
924
  }
880
925
  return out;
881
926
  }
927
+ /** This model's own `##` bundle (its self-entry's `ownNotes`). */
928
+ get _ownModelAnnotations() {
929
+ var _a;
930
+ return (_a = this.modelDef.modelAnnotations[this.modelDef.modelID]) === null || _a === void 0 ? void 0 : _a.ownNotes;
931
+ }
882
932
  /** @deprecated Use `.annotations.parseAsTag(route)`. */
883
933
  tagParse(spec) {
884
- return (0, annotation_1.annotationToTag)(this.modelDef.annotations, spec);
934
+ return (0, annotation_1.annotationToTag)(this._ownModelAnnotations, spec);
885
935
  }
886
936
  /** @deprecated Use `.annotations.texts(route)`. */
887
937
  getTaglines(prefix) {
888
- return (0, annotation_1.annotationToTaglines)(this.modelDef.annotations, prefix);
938
+ return (0, annotation_1.annotationToTaglines)(this._ownModelAnnotations, prefix);
889
939
  }
890
940
  get annotations() {
891
- return new annotation_1.Annotations(this.modelDef.annotations);
941
+ return new annotation_1.Annotations(this._ownModelAnnotations);
942
+ }
943
+ /** The model annotations resolved across this model's import/extend lineage. */
944
+ get modelAnnotations() {
945
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this.modelDef));
892
946
  }
893
947
  /**
894
948
  * Retrieve a reference for the token at the given position within the
@@ -976,7 +1030,7 @@ class Model {
976
1030
  getExploreByName(name) {
977
1031
  const struct = this.getContent(name);
978
1032
  if (struct && (0, model_1.isSourceDef)(struct)) {
979
- return new Explore(struct);
1033
+ return new Explore(this.modelDef, struct);
980
1034
  }
981
1035
  throw new Error("'name' is not an explore");
982
1036
  }
@@ -988,7 +1042,7 @@ class Model {
988
1042
  get explores() {
989
1043
  return Object.values(this.modelDef.contents)
990
1044
  .filter(model_1.isSourceDef)
991
- .map(structDef => new Explore(structDef));
1045
+ .map(structDef => new Explore(this.modelDef, structDef));
992
1046
  }
993
1047
  /**
994
1048
  * Enumerate the model's top-level queries by identifier.
@@ -1040,8 +1094,10 @@ class Model {
1040
1094
  * @return BuildPlan with graphs and sources map
1041
1095
  */
1042
1096
  getBuildPlan() {
1043
- // Require experimental.persistence compiler flag
1044
- const modelTag = this.annotations.parseAsTag('!').tag;
1097
+ // Require experimental.persistence compiler flag. Read the resolved model
1098
+ // annotations (`.modelAnnotations`, the import/extend fold) rather than this
1099
+ // model's own `##` so the flag carries across extend.
1100
+ const modelTag = this.modelAnnotations.parseAsTag('!').tag;
1045
1101
  if (!modelTag.has('experimental', 'persistence')) {
1046
1102
  throw new Error('Model must have ##! experimental.persistence to use getBuildPlan()');
1047
1103
  }
@@ -1069,7 +1125,7 @@ class Model {
1069
1125
  if (!(node.sourceID in sourcesMap)) {
1070
1126
  const sourceDef = (0, source_def_utils_1.resolveSourceID)(this.modelDef, node.sourceID);
1071
1127
  if (sourceDef) {
1072
- sourcesMap[node.sourceID] = new PersistSource(new Explore(sourceDef), this);
1128
+ sourcesMap[node.sourceID] = new PersistSource(new Explore(this.modelDef, sourceDef), this);
1073
1129
  }
1074
1130
  }
1075
1131
  collectSources(node.dependsOn);
@@ -1167,6 +1223,10 @@ class PersistSource {
1167
1223
  get annotations() {
1168
1224
  return this.explore.annotations;
1169
1225
  }
1226
+ /** The model annotations resolved for this source. */
1227
+ get modelAnnotations() {
1228
+ return this.explore.modelAnnotations;
1229
+ }
1170
1230
  /**
1171
1231
  * The connection name for this source.
1172
1232
  */
@@ -1247,11 +1307,14 @@ class Given {
1247
1307
  * value to `.run({givens: {[name]: ...}})`.
1248
1308
  * @param id Global GivenID. Stable across imports and renames.
1249
1309
  * @param _internal The internal Given declaration record.
1310
+ * @param _modelDef The model this given is declared in, for resolving
1311
+ * its model annotations.
1250
1312
  */
1251
- constructor(name, id, _internal) {
1313
+ constructor(name, id, _internal, _modelDef) {
1252
1314
  this.name = name;
1253
1315
  this.id = id;
1254
1316
  this._internal = _internal;
1317
+ this._modelDef = _modelDef;
1255
1318
  }
1256
1319
  get type() {
1257
1320
  return this._internal.type;
@@ -1274,6 +1337,10 @@ class Given {
1274
1337
  get annotations() {
1275
1338
  return new annotation_1.Annotations(this._internal.annotations);
1276
1339
  }
1340
+ /** The model annotations resolved for this given. */
1341
+ get modelAnnotations() {
1342
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this._modelDef));
1343
+ }
1277
1344
  }
1278
1345
  exports.Given = Given;
1279
1346
  /**
@@ -1314,6 +1381,10 @@ class PreparedQuery extends PipelineBase {
1314
1381
  get _modelDef() {
1315
1382
  return this._model._modelDef;
1316
1383
  }
1384
+ /** The model annotations resolved for this query's head. */
1385
+ get modelAnnotations() {
1386
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this._modelDef));
1387
+ }
1317
1388
  /**
1318
1389
  * Generate the SQL for this query.
1319
1390
  *
@@ -1423,6 +1494,10 @@ class PreparedResult {
1423
1494
  get annotations() {
1424
1495
  return new annotation_1.Annotations(this.inner.annotations);
1425
1496
  }
1497
+ /** The model annotations resolved for this query's run-head. */
1498
+ get modelAnnotations() {
1499
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this.modelDef));
1500
+ }
1426
1501
  /**
1427
1502
  * @deprecated Hands out raw IR (`AnnotationsDef`). Use `.annotations`
1428
1503
  * (returns the {@link Annotations} view) for read access. Internal
@@ -1433,15 +1508,15 @@ class PreparedResult {
1433
1508
  return this.inner.annotations;
1434
1509
  }
1435
1510
  /**
1436
- * @deprecated Hands out raw IR (`AnnotationsDef`). Internal code that
1437
- * needs the model-level IR shape should read `._modelDef.annotations`
1511
+ * @deprecated Hands out raw IR (`AnnotationsDef`). Internal code that needs
1512
+ * the model-level IR shape should call `getModelAnnotations(this.modelDef)`
1438
1513
  * directly. Slated for removal once external consumers migrate.
1439
1514
  */
1440
1515
  get modelAnnotation() {
1441
- return this.modelDef.annotations;
1516
+ return (0, model_1.getModelAnnotations)(this.modelDef);
1442
1517
  }
1443
1518
  get modelTag() {
1444
- return new annotation_1.Annotations(this.modelDef.annotations).parseAsTag().tag;
1519
+ return new annotation_1.Annotations((0, model_1.getModelAnnotations)(this.modelDef)).parseAsTag().tag;
1445
1520
  }
1446
1521
  /**
1447
1522
  * @return The name of the connection this query should be run against.
@@ -1476,17 +1551,17 @@ class PreparedResult {
1476
1551
  name: this.inner.queryName || explore.name,
1477
1552
  };
1478
1553
  try {
1479
- return new Explore(namedExplore, this.sourceExplore);
1554
+ return new Explore(this.modelDef, namedExplore, this.sourceExplore);
1480
1555
  }
1481
1556
  catch (error) {
1482
- return new Explore(namedExplore);
1557
+ return new Explore(this.modelDef, namedExplore);
1483
1558
  }
1484
1559
  }
1485
1560
  get sourceExplore() {
1486
1561
  const name = this.inner.sourceExplore;
1487
1562
  const explore = (0, model_1.safeRecordGet)(this.modelDef.contents, name);
1488
1563
  if (explore && (0, model_1.isSourceDef)(explore)) {
1489
- return new Explore(explore);
1564
+ return new Explore(this.modelDef, explore);
1490
1565
  }
1491
1566
  }
1492
1567
  get _sourceExploreName() {
@@ -1543,7 +1618,7 @@ class PreparedResult {
1543
1618
  .set(['query_name'], this.inner.queryName || struct.name)
1544
1619
  .toString(),
1545
1620
  });
1546
- const modelAnnotations = (0, to_stable_1.toStableAnnotations)(this.modelDef.annotations);
1621
+ const modelAnnotations = (0, to_stable_1.toStableAnnotations)((0, model_1.getModelAnnotations)(this.modelDef));
1547
1622
  return {
1548
1623
  schema,
1549
1624
  data,
@@ -412,10 +412,9 @@ function walkQueryData(data, structDef, normalizers) {
412
412
  * Walk a QueryRecord and normalize values according to the given normalizers.
413
413
  */
414
414
  function walkQueryRecord(row, structDef, normalizers) {
415
- var _a;
416
415
  const result = {};
417
416
  for (const fieldDef of structDef.fields) {
418
- const fieldName = (_a = fieldDef.as) !== null && _a !== void 0 ? _a : fieldDef.name;
417
+ const fieldName = (0, model_1.activeName)(fieldDef);
419
418
  const value = row[fieldName];
420
419
  result[fieldName] = walkValue(value, fieldDef, normalizers);
421
420
  }
@@ -666,6 +666,7 @@ class ModelMaterializer extends FluentState {
666
666
  const queryModel = await compile_1.Malloy.compile({
667
667
  source: text,
668
668
  restrictedMode: true,
669
+ method: 'query',
669
670
  urlReader,
670
671
  connections,
671
672
  model,
@@ -701,6 +702,7 @@ class ModelMaterializer extends FluentState {
701
702
  urlReader,
702
703
  connections,
703
704
  model,
705
+ method: 'extendModel',
704
706
  refreshSchemaCache: options === null || options === void 0 ? void 0 : options.refreshSchemaCache,
705
707
  noThrowOnError: options === null || options === void 0 ? void 0 : options.noThrowOnError,
706
708
  importBaseURL: options === null || options === void 0 ? void 0 : options.importBaseURL,
@@ -868,16 +870,6 @@ class ModelMaterializer extends FluentState {
868
870
  }
869
871
  }
870
872
  exports.ModelMaterializer = ModelMaterializer;
871
- // =============================================================================
872
- // QueryMaterializer
873
- // =============================================================================
874
- function runSQLOptionsWithAnnotations(preparedResult, givenOptions) {
875
- return {
876
- queryAnnotations: preparedResult._rawQuery.annotations,
877
- modelAnnotations: preparedResult._modelDef.annotations,
878
- ...givenOptions,
879
- };
880
- }
881
873
  class QueryMaterializer extends FluentState {
882
874
  constructor(runtime, materialize, options) {
883
875
  super(runtime, materialize);
@@ -958,17 +950,15 @@ class QueryMaterializer extends FluentState {
958
950
  async run(options) {
959
951
  const connections = this.runtime.connections;
960
952
  const preparedResult = await this.getPreparedResult(options);
961
- const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
962
- return compile_1.Malloy.run({ connections, preparedResult, options: finalOptions });
953
+ return compile_1.Malloy.run({ connections, preparedResult, options });
963
954
  }
964
955
  async *runStream(options) {
965
956
  const preparedResult = await this.getPreparedResult(options);
966
957
  const connections = this.runtime.connections;
967
- const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
968
958
  const stream = compile_1.Malloy.runStream({
969
959
  connections,
970
960
  preparedResult,
971
- options: finalOptions,
961
+ options,
972
962
  });
973
963
  for await (const row of stream) {
974
964
  yield row;
@@ -1010,7 +1000,9 @@ class QueryMaterializer extends FluentState {
1010
1000
  buildManifest = undefined;
1011
1001
  }
1012
1002
  if (buildManifest) {
1013
- const modelTag = preparedQuery.model.annotations.parseAsTag('!').tag;
1003
+ // Resolved model annotations (the import/extend fold), so the
1004
+ // `experimental.persistence` flag carries across extend.
1005
+ const modelTag = preparedQuery.model.modelAnnotations.parseAsTag('!').tag;
1014
1006
  if (!modelTag.has('experimental', 'persistence')) {
1015
1007
  if (explicitManifest) {
1016
1008
  // Explicitly passed non-empty manifest requires persistence support
@@ -1177,21 +1169,19 @@ class PreparedResultMaterializer extends FluentState {
1177
1169
  async run(options) {
1178
1170
  const preparedResult = await this.getPreparedResult();
1179
1171
  const connections = this.runtime.connections;
1180
- const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
1181
1172
  return compile_1.Malloy.run({
1182
1173
  connections,
1183
1174
  preparedResult,
1184
- options: finalOptions,
1175
+ options,
1185
1176
  });
1186
1177
  }
1187
1178
  async *runStream(options) {
1188
1179
  const preparedResult = await this.getPreparedResult();
1189
1180
  const connections = this.runtime.connections;
1190
- const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
1191
1181
  const stream = compile_1.Malloy.runStream({
1192
1182
  connections,
1193
1183
  preparedResult,
1194
- options: finalOptions,
1184
+ options,
1195
1185
  });
1196
1186
  for await (const row of stream) {
1197
1187
  yield row;
@@ -11,6 +11,11 @@ export interface Taggable {
11
11
  * `tagParse`/`getTaglines`, this sees multi-line annotations (`#|`…`|#`).
12
12
  */
13
13
  readonly annotations: Annotations;
14
+ /**
15
+ * The model annotations for this object, resolved across its import/extend
16
+ * lineage. Empty for an object with no model in hand.
17
+ */
18
+ readonly modelAnnotations: Annotations;
14
19
  /**
15
20
  * @deprecated The RegExp form cannot see multi-line annotations
16
21
  * (`#|`…`|#`) and cannot report content offsets for error mapping. Use
@@ -21,7 +21,22 @@ export interface ParseOptions {
21
21
  testEnvironment?: boolean;
22
22
  /** Reject language constructs that reach outside the trusted model. */
23
23
  restrictedMode?: boolean;
24
+ /**
25
+ * Diagnostic label for the synthetic URL minted when compiling inline
26
+ * source that has no URL of its own: `internal://<method>/<uuid>`. Each
27
+ * such compile still gets a unique id regardless; this just makes the
28
+ * originating operation legible in error locations and annotation
29
+ * provenance. Read solely to build that URL — never branched on.
30
+ */
31
+ method?: CompileMethod;
24
32
  }
33
+ /**
34
+ * The operation behind a URL-less (inline-source) compile, used only to
35
+ * label its synthetic `internal://` URL. `query` covers both the stable
36
+ * query-compile path and `loadRestrictedQuery`; `loadQuery` is a `loadModel`
37
+ * under the hood and carries that label.
38
+ */
39
+ export type CompileMethod = 'loadModel' | 'extendModel' | 'query';
25
40
  /** Options for how to run the Malloy semantic checker/translator */
26
41
  export interface CompileOptions {
27
42
  refreshSchemaCache?: boolean | number;
package/dist/api/index.js CHANGED
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ /*
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
5
+ */
2
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
7
  if (k2 === undefined) k2 = k;
4
8
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -37,12 +41,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
37
41
  };
38
42
  Object.defineProperty(exports, "__esModule", { value: true });
39
43
  exports.util = exports.asynchronous = exports.stateless = exports.sessioned = void 0;
40
- /*
41
- * Copyright (c) Meta Platforms, Inc. and affiliates.
42
- *
43
- * This source code is licensed under the MIT license found in the
44
- * LICENSE file in the root directory of this source tree.
45
- */
46
44
  exports.sessioned = __importStar(require("./sessioned"));
47
45
  exports.stateless = __importStar(require("./stateless"));
48
46
  exports.asynchronous = __importStar(require("./asynchronous"));
@@ -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;
@@ -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/api/util.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.DEFAULT_LOG_RANGE = void 0;
@@ -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.BaseConnection = void 0;
@@ -1,13 +1,11 @@
1
1
  import type { RunSQLOptions } from '../run_sql_options';
2
- import type { AnnotationsDef, MalloyQueryData, QueryRecord, QueryRunStats, SQLSourceDef, TableSourceDef } from '../model/malloy_types';
2
+ import type { MalloyQueryData, QueryRecord, QueryRunStats, SQLSourceDef, TableSourceDef } from '../model/malloy_types';
3
3
  import type { SQLSourceRequest } from '../lang/translate-response';
4
4
  /**
5
5
  * Options passed to fetchSchema methods.
6
6
  */
7
7
  export interface FetchSchemaOptions {
8
8
  refreshTimestamp?: number;
9
- /** Model annotations forwarded to the adapter (e.g. `##!` dialect flags). */
10
- modelAnnotations?: AnnotationsDef;
11
9
  }
12
10
  /**
13
11
  * An object capable of reading schemas for given table names.
@@ -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.toAsyncGenerator = toAsyncGenerator;
@@ -230,6 +230,13 @@ export declare abstract class Dialect {
230
230
  * - `EscapeStyle.Unset` (default): base method throws if reached.
231
231
  */
232
232
  identifierEscapeStyle: EscapeStyleValue;
233
+ /**
234
+ * Escape the body of a backslash-style quoted token (`EscapeStyle.Backslash`
235
+ * dialects) — the backslash, the closing `delim`, and newline/CR/tab. The
236
+ * newline matters: BigQuery rejects a raw one ("Unclosed string literal").
237
+ * `\0` / U+2028 / U+2029 are passed through (no evidence they break a lexer).
238
+ */
239
+ protected escapeBackslashStyle(body: string, delim: string): string;
233
240
  /**
234
241
  * Wrap an identifier in the dialect's quote character, escaping any
235
242
  * embedded quote characters per the dialect's `identifierEscapeStyle`.
@@ -446,10 +453,8 @@ export declare abstract class Dialect {
446
453
  */
447
454
  sqlLiteralString(literal: string): string;
448
455
  /**
449
- * Render a Malloy regex literal as a SQL string literal. Defaults to
450
- * `sqlLiteralString` the regex engine receives whatever bytes the
451
- * SQL parser decodes, and `sqlLiteralString` already produces a
452
- * correctly decoding literal for both escape styles.
456
+ * Render a Malloy regex literal. Defaults to `sqlLiteralString`: the regex
457
+ * engine receives whatever the SQL parser decodes, which is already correct.
453
458
  */
454
459
  sqlLiteralRegexp(literal: string): string;
455
460
  abstract sqlLiteralArray(lit: ArrayLiteralNode): string;