@malloydata/malloy 0.0.43 → 0.0.44-dev230623185845

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 (102) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.js +3 -1
  3. package/dist/lang/ast/elements/define-query.d.ts +7 -1
  4. package/dist/lang/ast/elements/define-query.js +10 -1
  5. package/dist/lang/ast/elements/define-source.d.ts +7 -1
  6. package/dist/lang/ast/elements/define-source.js +16 -9
  7. package/dist/lang/ast/elements/pipeline-desc.d.ts +2 -1
  8. package/dist/lang/ast/elements/pipeline-desc.js +6 -2
  9. package/dist/lang/ast/elements/refined-source.d.ts +5 -4
  10. package/dist/lang/ast/elements/refined-source.js +5 -0
  11. package/dist/lang/ast/expressions/expr-id-reference.js +4 -4
  12. package/dist/lang/ast/field-space/column-space-field.d.ts +1 -1
  13. package/dist/lang/ast/field-space/column-space-field.js +3 -3
  14. package/dist/lang/ast/field-space/field-definition-value.d.ts +1 -1
  15. package/dist/lang/ast/field-space/field-definition-value.js +16 -10
  16. package/dist/lang/ast/field-space/query-field-struct.js +1 -0
  17. package/dist/lang/ast/field-space/query-spaces.js +4 -1
  18. package/dist/lang/ast/field-space/reference-field.d.ts +8 -2
  19. package/dist/lang/ast/field-space/reference-field.js +51 -9
  20. package/dist/lang/ast/index.d.ts +2 -2
  21. package/dist/lang/ast/index.js +2 -2
  22. package/dist/lang/ast/query-elements/anonymous-query.d.ts +6 -1
  23. package/dist/lang/ast/query-elements/anonymous-query.js +8 -0
  24. package/dist/lang/ast/query-elements/existing-query.js +3 -0
  25. package/dist/lang/ast/query-elements/full-query.js +7 -4
  26. package/dist/lang/ast/query-elements/run-query.d.ts +6 -1
  27. package/dist/lang/ast/query-elements/run-query.js +11 -1
  28. package/dist/lang/ast/query-items/field-declaration.d.ts +6 -2
  29. package/dist/lang/ast/query-items/field-declaration.js +6 -0
  30. package/dist/lang/ast/query-items/field-references.d.ts +13 -5
  31. package/dist/lang/ast/query-items/field-references.js +10 -4
  32. package/dist/lang/ast/query-properties/aggregate.d.ts +3 -3
  33. package/dist/lang/ast/query-properties/aggregate.js +5 -4
  34. package/dist/lang/ast/query-properties/calculate.d.ts +3 -3
  35. package/dist/lang/ast/query-properties/calculate.js +5 -4
  36. package/dist/lang/ast/query-properties/declare-fields.d.ts +4 -3
  37. package/dist/lang/ast/query-properties/declare-fields.js +5 -4
  38. package/dist/lang/ast/query-properties/dimensions.d.ts +4 -0
  39. package/dist/lang/ast/query-properties/{dimmensions.js → dimensions.js} +4 -3
  40. package/dist/lang/ast/query-properties/extend.d.ts +1 -1
  41. package/dist/lang/ast/query-properties/extend.js +3 -2
  42. package/dist/lang/ast/query-properties/filters.d.ts +0 -1
  43. package/dist/lang/ast/query-properties/filters.js +2 -2
  44. package/dist/lang/ast/query-properties/group-by.d.ts +3 -3
  45. package/dist/lang/ast/query-properties/group-by.js +5 -4
  46. package/dist/lang/ast/query-properties/joins.d.ts +10 -4
  47. package/dist/lang/ast/query-properties/joins.js +16 -2
  48. package/dist/lang/ast/query-properties/measures.d.ts +1 -2
  49. package/dist/lang/ast/query-properties/measures.js +3 -2
  50. package/dist/lang/ast/query-properties/nest.d.ts +5 -1
  51. package/dist/lang/ast/query-properties/nest.js +11 -1
  52. package/dist/lang/ast/query-properties/nests.d.ts +3 -2
  53. package/dist/lang/ast/query-properties/nests.js +4 -3
  54. package/dist/lang/ast/query-properties/ordering.d.ts +1 -0
  55. package/dist/lang/ast/query-properties/ordering.js +2 -1
  56. package/dist/lang/ast/query-properties/project-statement.d.ts +3 -3
  57. package/dist/lang/ast/query-properties/project-statement.js +5 -4
  58. package/dist/lang/ast/query-properties/qop-desc.d.ts +1 -1
  59. package/dist/lang/ast/query-properties/qop-desc.js +3 -2
  60. package/dist/lang/ast/source-properties/renames.d.ts +1 -1
  61. package/dist/lang/ast/source-properties/renames.js +3 -2
  62. package/dist/lang/ast/source-properties/turtles.d.ts +3 -3
  63. package/dist/lang/ast/source-properties/turtles.js +5 -4
  64. package/dist/lang/ast/types/definition-list.d.ts +10 -0
  65. package/dist/lang/ast/types/definition-list.js +52 -0
  66. package/dist/lang/ast/types/malloy-element.d.ts +21 -6
  67. package/dist/lang/ast/types/malloy-element.js +45 -13
  68. package/dist/lang/ast/types/noteable.d.ts +12 -0
  69. package/dist/lang/ast/types/noteable.js +42 -0
  70. package/dist/lang/ast/types/query-extend-property.d.ts +1 -1
  71. package/dist/lang/ast/types/query-extend-property.js +2 -2
  72. package/dist/lang/ast/types/query-property.d.ts +3 -2
  73. package/dist/lang/ast/types/query-property.js +2 -0
  74. package/dist/lang/ast/types/source-desc.d.ts +5 -0
  75. package/dist/lang/ast/types/{explore-desc.js → source-desc.js} +7 -6
  76. package/dist/lang/ast/types/source-property.d.ts +2 -2
  77. package/dist/lang/ast/types/source-property.js +2 -0
  78. package/dist/lang/ast/types/space-field.d.ts +1 -0
  79. package/dist/lang/lib/Malloy/MalloyLexer.d.ts +56 -54
  80. package/dist/lang/lib/Malloy/MalloyLexer.js +1051 -1042
  81. package/dist/lang/lib/Malloy/MalloyParser.d.ts +326 -182
  82. package/dist/lang/lib/Malloy/MalloyParser.js +2894 -1718
  83. package/dist/lang/lib/Malloy/MalloyParserListener.d.ts +133 -19
  84. package/dist/lang/lib/Malloy/MalloyParserVisitor.d.ts +83 -11
  85. package/dist/lang/malloy-to-ast.d.ts +23 -10
  86. package/dist/lang/malloy-to-ast.js +144 -122
  87. package/dist/lang/parse-tree-walkers/document-symbol-walker.js +2 -1
  88. package/dist/lang/test/annotation.spec.d.ts +1 -0
  89. package/dist/lang/test/annotation.spec.js +565 -0
  90. package/dist/lang/test/parse.spec.js +20 -19
  91. package/dist/lang/test/test-translator.d.ts +2 -2
  92. package/dist/lang/test/test-translator.js +27 -15
  93. package/dist/malloy.d.ts +11 -5
  94. package/dist/malloy.js +16 -0
  95. package/dist/model/malloy_query.js +10 -0
  96. package/dist/model/malloy_types.d.ts +19 -2
  97. package/dist/model/malloy_types.js +1 -1
  98. package/dist/tags.d.ts +21 -0
  99. package/dist/tags.js +155 -0
  100. package/package.json +1 -1
  101. package/dist/lang/ast/query-properties/dimmensions.d.ts +0 -5
  102. package/dist/lang/ast/types/explore-desc.d.ts +0 -5
@@ -1,16 +1,20 @@
1
1
  import { Dialect } from '../../../dialect/dialect';
2
- import { FieldTypeDef, StructDef } from '../../../model/malloy_types';
2
+ import { Annotation, FieldTypeDef, StructDef } from '../../../model/malloy_types';
3
3
  import { ExprValue } from '../types/expr-value';
4
4
  import { ExpressionDef } from '../types/expression-def';
5
5
  import { FieldName, FieldSpace, QueryFieldSpace } from '../types/field-space';
6
6
  import { LookupResult } from '../types/lookup-result';
7
7
  import { MalloyElement } from '../types/malloy-element';
8
8
  import { SpaceEntry } from '../types/space-entry';
9
+ import { extendNoteMethod, Noteable } from '../types/noteable';
9
10
  export declare type FieldDeclarationConstructor = new (expr: ExpressionDef, defineName: string, exprSrc?: string) => FieldDeclaration;
10
- export declare abstract class FieldDeclaration extends MalloyElement {
11
+ export declare abstract class FieldDeclaration extends MalloyElement implements Noteable {
11
12
  readonly expr: ExpressionDef;
12
13
  readonly defineName: string;
13
14
  readonly exprSrc?: string | undefined;
15
+ readonly isNoteableObj = true;
16
+ extendNote: typeof extendNoteMethod;
17
+ note?: Annotation;
14
18
  constructor(expr: ExpressionDef, defineName: string, exprSrc?: string | undefined);
15
19
  fieldDef(fs: FieldSpace, exprName: string): FieldTypeDef;
16
20
  abstract typecheckExprValue(expr: ExprValue): void;
@@ -29,12 +29,15 @@ const fragtype_utils_1 = require("../fragtype-utils");
29
29
  const granular_result_1 = require("../types/granular-result");
30
30
  const malloy_element_1 = require("../types/malloy-element");
31
31
  const typecheck_utils_1 = require("./typecheck_utils");
32
+ const noteable_1 = require("../types/noteable");
32
33
  class FieldDeclaration extends malloy_element_1.MalloyElement {
33
34
  constructor(expr, defineName, exprSrc) {
34
35
  super({ expr: expr });
35
36
  this.expr = expr;
36
37
  this.defineName = defineName;
37
38
  this.exprSrc = exprSrc;
39
+ this.isNoteableObj = true;
40
+ this.extendNote = noteable_1.extendNoteMethod;
38
41
  }
39
42
  fieldDef(fs, exprName) {
40
43
  /*
@@ -92,6 +95,9 @@ class FieldDeclaration extends malloy_element_1.MalloyElement {
92
95
  if ((0, granular_result_1.isGranularResult)(exprValue) && template.type === 'timestamp') {
93
96
  template.timeframe = exprValue.timeframe;
94
97
  }
98
+ if (this.note) {
99
+ template.annotation = this.note;
100
+ }
95
101
  return template;
96
102
  }
97
103
  const circularDef = exprFS instanceof DefSpace && exprFS.foundCircle;
@@ -1,10 +1,14 @@
1
- import { FieldDef, TypeDesc } from '../../../model/malloy_types';
1
+ import { Annotation, FieldDef, TypeDesc } from '../../../model/malloy_types';
2
+ import { DefinitionList } from '../types/definition-list';
2
3
  import { FieldName, FieldSpace } from '../types/field-space';
3
4
  import { LookupResult } from '../types/lookup-result';
4
5
  import { ListOf, MalloyElement } from '../types/malloy-element';
6
+ import { Noteable, extendNoteMethod } from '../types/noteable';
5
7
  export declare type FieldReferenceConstructor = new (names: FieldName[]) => FieldReference;
6
- export declare abstract class FieldReference extends ListOf<FieldName> {
7
- elementType: string;
8
+ export declare abstract class FieldReference extends ListOf<FieldName> implements Noteable {
9
+ readonly isNoteableObj = true;
10
+ note?: Annotation;
11
+ extendNote: typeof extendNoteMethod;
8
12
  constructor(names: FieldName[]);
9
13
  get refString(): string;
10
14
  get outputName(): string;
@@ -53,15 +57,19 @@ export declare class DimensionFieldReference extends FieldReference {
53
57
  elementType: string;
54
58
  typecheck(type: TypeDesc): void;
55
59
  }
56
- export declare class WildcardFieldReference extends MalloyElement {
60
+ export declare class WildcardFieldReference extends MalloyElement implements Noteable {
57
61
  readonly joinPath: FieldReference | undefined;
58
62
  readonly star: '*' | '**';
59
63
  elementType: string;
64
+ note?: Annotation;
65
+ readonly isNoteableObj = true;
66
+ extendNote: typeof extendNoteMethod;
60
67
  constructor(joinPath: FieldReference | undefined, star: '*' | '**');
61
68
  getFieldDef(): FieldDef;
62
69
  get refString(): string;
63
70
  }
64
71
  export declare type FieldReferenceElement = FieldReference | WildcardFieldReference;
65
- export declare class FieldReferences extends ListOf<FieldReferenceElement> {
72
+ export declare class FieldReferences extends DefinitionList<FieldReferenceElement> {
73
+ elementType: string;
66
74
  constructor(members: FieldReferenceElement[]);
67
75
  }
@@ -23,12 +23,15 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.FieldReferences = exports.WildcardFieldReference = exports.DimensionFieldReference = exports.MeasureFieldReference = exports.DeclareFieldReference = exports.ProjectFieldReference = exports.GroupByFieldReference = exports.AggregateFieldReference = exports.IndexFieldReference = exports.CalculateFieldReference = exports.ExpressionFieldReference = exports.AcceptExceptFieldReference = exports.FieldReference = void 0;
26
+ const definition_list_1 = require("../types/definition-list");
26
27
  const malloy_element_1 = require("../types/malloy-element");
28
+ const noteable_1 = require("../types/noteable");
27
29
  const typecheck_utils_1 = require("./typecheck_utils");
28
30
  class FieldReference extends malloy_element_1.ListOf {
29
31
  constructor(names) {
30
- super('fieldReference', names);
31
- this.elementType = 'fieldReference';
32
+ super(names);
33
+ this.isNoteableObj = true;
34
+ this.extendNote = noteable_1.extendNoteMethod;
32
35
  }
33
36
  get refString() {
34
37
  return this.list.map(n => n.refString).join('.');
@@ -167,6 +170,8 @@ class WildcardFieldReference extends malloy_element_1.MalloyElement {
167
170
  this.joinPath = joinPath;
168
171
  this.star = star;
169
172
  this.elementType = 'wildcardFieldReference';
173
+ this.isNoteableObj = true;
174
+ this.extendNote = noteable_1.extendNoteMethod;
170
175
  this.has({ joinPath: joinPath });
171
176
  }
172
177
  getFieldDef() {
@@ -179,9 +184,10 @@ class WildcardFieldReference extends malloy_element_1.MalloyElement {
179
184
  }
180
185
  }
181
186
  exports.WildcardFieldReference = WildcardFieldReference;
182
- class FieldReferences extends malloy_element_1.ListOf {
187
+ class FieldReferences extends definition_list_1.DefinitionList {
183
188
  constructor(members) {
184
- super('fieldReferenceList', members);
189
+ super(members);
190
+ this.elementType = 'fieldReferenceList';
185
191
  }
186
192
  }
187
193
  exports.FieldReferences = FieldReferences;
@@ -1,5 +1,5 @@
1
- import { ListOf } from '../types/malloy-element';
1
+ import { DefinitionList } from '../types/definition-list';
2
2
  import { QueryItem } from '../types/query-item';
3
- export declare class Aggregate extends ListOf<QueryItem> {
4
- constructor(members: QueryItem[]);
3
+ export declare class Aggregate extends DefinitionList<QueryItem> {
4
+ elementType: string;
5
5
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Aggregate = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class Aggregate extends malloy_element_1.ListOf {
28
- constructor(members) {
29
- super('aggregate', members);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class Aggregate extends definition_list_1.DefinitionList {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'aggregateList';
30
31
  }
31
32
  }
32
33
  exports.Aggregate = Aggregate;
@@ -1,5 +1,5 @@
1
- import { ListOf } from '../types/malloy-element';
1
+ import { DefinitionList } from '../types/definition-list';
2
2
  import { QueryItem } from '../types/query-item';
3
- export declare class Calculate extends ListOf<QueryItem> {
4
- constructor(members: QueryItem[]);
3
+ export declare class Calculate extends DefinitionList<QueryItem> {
4
+ elementType: string;
5
5
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Calculate = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class Calculate extends malloy_element_1.ListOf {
28
- constructor(members) {
29
- super('calculate', members);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class Calculate extends definition_list_1.DefinitionList {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'calculate';
30
31
  }
31
32
  }
32
33
  exports.Calculate = Calculate;
@@ -1,5 +1,6 @@
1
1
  import { FieldDeclaration } from '../query-items/field-declaration';
2
- import { ListOf } from '../types/malloy-element';
3
- export declare class DeclareFields extends ListOf<FieldDeclaration> {
4
- constructor(fields: FieldDeclaration[], fieldType?: string);
2
+ import { DefinitionList } from '../types/definition-list';
3
+ export declare class DeclareFields extends DefinitionList<FieldDeclaration> {
4
+ elementType: string;
5
+ constructor(fields: FieldDeclaration[]);
5
6
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.DeclareFields = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class DeclareFields extends malloy_element_1.ListOf {
28
- constructor(fields, fieldType = 'declare') {
29
- super(fieldType, fields);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class DeclareFields extends definition_list_1.DefinitionList {
28
+ constructor(fields) {
29
+ super(fields);
30
+ this.elementType = 'declareFields';
30
31
  }
31
32
  }
32
33
  exports.DeclareFields = DeclareFields;
@@ -0,0 +1,4 @@
1
+ import { DeclareFields } from './declare-fields';
2
+ export declare class Dimensions extends DeclareFields {
3
+ elementType: string;
4
+ }
@@ -25,9 +25,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Dimensions = void 0;
26
26
  const declare_fields_1 = require("./declare-fields");
27
27
  class Dimensions extends declare_fields_1.DeclareFields {
28
- constructor(dimensions) {
29
- super(dimensions, 'dimension');
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'dimensionList';
30
31
  }
31
32
  }
32
33
  exports.Dimensions = Dimensions;
33
- //# sourceMappingURL=dimmensions.js.map
34
+ //# sourceMappingURL=dimensions.js.map
@@ -1,5 +1,5 @@
1
1
  import { ListOf } from '../types/malloy-element';
2
2
  import { QueryExtendProperty } from '../types/query-extend-property';
3
3
  export declare class ExtendBlock extends ListOf<QueryExtendProperty> {
4
- constructor(properties: QueryExtendProperty[]);
4
+ elementType: string;
5
5
  }
@@ -25,8 +25,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.ExtendBlock = void 0;
26
26
  const malloy_element_1 = require("../types/malloy-element");
27
27
  class ExtendBlock extends malloy_element_1.ListOf {
28
- constructor(properties) {
29
- super('extend property', properties);
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'extendBlock';
30
31
  }
31
32
  }
32
33
  exports.ExtendBlock = ExtendBlock;
@@ -12,7 +12,6 @@ export declare class FilterElement extends MalloyElement {
12
12
  export declare class Filter extends ListOf<FilterElement> {
13
13
  elementType: string;
14
14
  private readonly havingClause?;
15
- constructor(elements?: FilterElement[]);
16
15
  set having(isHaving: boolean);
17
16
  getFilterList(fs: FieldSpace): FilterExpression[];
18
17
  }
@@ -53,8 +53,8 @@ class FilterElement extends malloy_element_1.MalloyElement {
53
53
  }
54
54
  exports.FilterElement = FilterElement;
55
55
  class Filter extends malloy_element_1.ListOf {
56
- constructor(elements = []) {
57
- super('filterElements', elements);
56
+ constructor() {
57
+ super(...arguments);
58
58
  this.elementType = 'filter';
59
59
  }
60
60
  set having(isHaving) {
@@ -1,5 +1,5 @@
1
- import { ListOf } from '../types/malloy-element';
1
+ import { DefinitionList } from '../types/definition-list';
2
2
  import { QueryItem } from '../types/query-item';
3
- export declare class GroupBy extends ListOf<QueryItem> {
4
- constructor(members: QueryItem[]);
3
+ export declare class GroupBy extends DefinitionList<QueryItem> {
4
+ elementType: string;
5
5
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.GroupBy = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class GroupBy extends malloy_element_1.ListOf {
28
- constructor(members) {
29
- super('groupBy', members);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class GroupBy extends definition_list_1.DefinitionList {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'groupBy';
30
31
  }
31
32
  }
32
33
  exports.GroupBy = GroupBy;
@@ -1,12 +1,17 @@
1
- import { Expr, StructDef } from '../../../model/malloy_types';
1
+ import { Annotation, Expr, StructDef } from '../../../model/malloy_types';
2
2
  import { Source } from '../elements/source';
3
+ import { DefinitionList } from '../types/definition-list';
3
4
  import { ExpressionDef } from '../types/expression-def';
4
5
  import { FieldSpace } from '../types/field-space';
5
- import { ListOf, MalloyElement, ModelEntryReference } from '../types/malloy-element';
6
- export declare abstract class Join extends MalloyElement {
6
+ import { MalloyElement, ModelEntryReference } from '../types/malloy-element';
7
+ import { extendNoteMethod, Noteable } from '../types/noteable';
8
+ export declare abstract class Join extends MalloyElement implements Noteable {
7
9
  abstract name: ModelEntryReference;
8
10
  abstract structDef(): StructDef;
9
11
  abstract fixupJoinOn(outer: FieldSpace, inStruct: StructDef): void;
12
+ readonly isNoteableObj = true;
13
+ extendNote: typeof extendNoteMethod;
14
+ note?: Annotation;
10
15
  }
11
16
  export declare class KeyJoin extends Join {
12
17
  readonly name: ModelEntryReference;
@@ -30,7 +35,8 @@ export declare class ExpressionJoin extends Join {
30
35
  fixupJoinOn(outer: FieldSpace, inStruct: StructDef): Expr | undefined;
31
36
  structDef(): StructDef;
32
37
  }
33
- export declare class Joins extends ListOf<Join> {
38
+ export declare class Joins extends DefinitionList<Join> {
39
+ elementType: string;
34
40
  constructor(joins: Join[]);
35
41
  }
36
42
  export {};
@@ -25,8 +25,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Joins = exports.ExpressionJoin = exports.KeyJoin = exports.Join = void 0;
26
26
  const malloy_types_1 = require("../../../model/malloy_types");
27
27
  const utils_1 = require("../expressions/utils");
28
+ const definition_list_1 = require("../types/definition-list");
28
29
  const malloy_element_1 = require("../types/malloy-element");
30
+ const noteable_1 = require("../types/noteable");
29
31
  class Join extends malloy_element_1.MalloyElement {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.isNoteableObj = true;
35
+ this.extendNote = noteable_1.extendNoteMethod;
36
+ }
30
37
  }
31
38
  exports.Join = Join;
32
39
  class KeyJoin extends Join {
@@ -54,6 +61,9 @@ class KeyJoin extends Join {
54
61
  else {
55
62
  joinStruct.as = this.name.refString;
56
63
  }
64
+ if (this.note) {
65
+ joinStruct.annotation = this.note;
66
+ }
57
67
  return joinStruct;
58
68
  }
59
69
  fixupJoinOn(outer, inStruct) {
@@ -133,13 +143,17 @@ class ExpressionJoin extends Join {
133
143
  else {
134
144
  joinStruct.as = this.name.refString;
135
145
  }
146
+ if (this.note) {
147
+ joinStruct.annotation = this.note;
148
+ }
136
149
  return joinStruct;
137
150
  }
138
151
  }
139
152
  exports.ExpressionJoin = ExpressionJoin;
140
- class Joins extends malloy_element_1.ListOf {
153
+ class Joins extends definition_list_1.DefinitionList {
141
154
  constructor(joins) {
142
- super('joinList', joins);
155
+ super(joins);
156
+ this.elementType = 'joinList';
143
157
  }
144
158
  }
145
159
  exports.Joins = Joins;
@@ -1,5 +1,4 @@
1
- import { FieldDeclaration } from '../query-items/field-declaration';
2
1
  import { DeclareFields } from './declare-fields';
3
2
  export declare class Measures extends DeclareFields {
4
- constructor(measures: FieldDeclaration[]);
3
+ elementType: string;
5
4
  }
@@ -25,8 +25,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Measures = void 0;
26
26
  const declare_fields_1 = require("./declare-fields");
27
27
  class Measures extends declare_fields_1.DeclareFields {
28
- constructor(measures) {
29
- super(measures, 'measure');
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'measureList';
30
31
  }
31
32
  }
32
33
  exports.Measures = Measures;
@@ -2,11 +2,15 @@ import * as model from '../../../model/malloy_types';
2
2
  import { NestedQuery } from '../types/nested-query';
3
3
  import { FieldName, FieldSpace } from '../types/field-space';
4
4
  import { MalloyElement } from '../types/malloy-element';
5
+ import { Noteable, extendNoteMethod } from '../types/noteable';
5
6
  import { QueryField } from '../field-space/query-space-field';
6
7
  import { TurtleHeadedPipe } from '../types/turtle-headed-pipe';
7
8
  import { QueryInputSpace } from '../field-space/query-spaces';
8
- export declare class TurtleDecl extends TurtleHeadedPipe {
9
+ export declare class TurtleDecl extends TurtleHeadedPipe implements Noteable {
9
10
  readonly name: string;
11
+ readonly isNoteableObj = true;
12
+ extendNote: typeof extendNoteMethod;
13
+ note?: model.Annotation;
10
14
  constructor(name: string);
11
15
  getPipeline(fs: FieldSpace): model.Pipeline;
12
16
  getFieldDef(fs: FieldSpace, nestParent: QueryInputSpace | undefined): model.TurtleDef;
@@ -23,6 +23,7 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.QueryFieldAST = exports.isNestedQuery = exports.NestDefinition = exports.NestRefinement = exports.TurtleDecl = void 0;
26
+ const noteable_1 = require("../types/noteable");
26
27
  const nest_reference_1 = require("./nest-reference");
27
28
  const query_space_field_1 = require("../field-space/query-space-field");
28
29
  const struct_utils_1 = require("../struct-utils");
@@ -36,6 +37,8 @@ class TurtleDecl extends turtle_headed_pipe_1.TurtleHeadedPipe {
36
37
  constructor(name) {
37
38
  super();
38
39
  this.name = name;
40
+ this.isNoteableObj = true;
41
+ this.extendNote = noteable_1.extendNoteMethod;
39
42
  }
40
43
  getPipeline(fs) {
41
44
  const modelPipe = { pipeline: [] };
@@ -51,6 +54,9 @@ class TurtleDecl extends turtle_headed_pipe_1.TurtleHeadedPipe {
51
54
  if (isTurtle(headDef)) {
52
55
  const newPipe = this.refinePipeline(fs, headDef);
53
56
  modelPipe.pipeline = [...newPipe.pipeline];
57
+ if (headDef.annotation) {
58
+ this.extendNote({ inherits: headDef.annotation });
59
+ }
54
60
  reportWrongType = false;
55
61
  }
56
62
  }
@@ -78,12 +84,16 @@ class TurtleDecl extends turtle_headed_pipe_1.TurtleHeadedPipe {
78
84
  this.nestedInQuerySpace = nestParent;
79
85
  }
80
86
  const pipe = this.getPipeline(fs);
81
- return {
87
+ const turtle = {
82
88
  type: 'turtle',
83
89
  name: this.name,
84
90
  ...pipe,
85
91
  location: this.location,
86
92
  };
93
+ if (this.note) {
94
+ turtle.annotation = this.note;
95
+ }
96
+ return turtle;
87
97
  }
88
98
  }
89
99
  exports.TurtleDecl = TurtleDecl;
@@ -1,5 +1,6 @@
1
- import { ListOf } from '../types/malloy-element';
1
+ import { DefinitionList } from '../types/definition-list';
2
2
  import { NestedQuery } from '../types/nested-query';
3
- export declare class Nests extends ListOf<NestedQuery> {
3
+ export declare class Nests extends DefinitionList<NestedQuery> {
4
+ elementType: string;
4
5
  constructor(nests: NestedQuery[]);
5
6
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Nests = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class Nests extends malloy_element_1.ListOf {
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class Nests extends definition_list_1.DefinitionList {
28
28
  constructor(nests) {
29
- super('nestedQueries', nests);
29
+ super(nests);
30
+ this.elementType = 'nestedQueries';
30
31
  }
31
32
  }
32
33
  exports.Nests = Nests;
@@ -10,6 +10,7 @@ export declare class OrderBy extends MalloyElement {
10
10
  getOrderBy(fs: FieldSpace): ModelOrderBy;
11
11
  }
12
12
  export declare class Ordering extends ListOf<OrderBy> {
13
+ elementType: string;
13
14
  constructor(list: OrderBy[]);
14
15
  getOrderBy(fs: FieldSpace): ModelOrderBy[];
15
16
  }
@@ -66,7 +66,8 @@ class OrderBy extends malloy_element_1.MalloyElement {
66
66
  exports.OrderBy = OrderBy;
67
67
  class Ordering extends malloy_element_1.ListOf {
68
68
  constructor(list) {
69
- super('ordering', list);
69
+ super(list);
70
+ this.elementType = 'ordering';
70
71
  }
71
72
  getOrderBy(fs) {
72
73
  return this.list.map(el => el.getOrderBy(fs));
@@ -1,5 +1,5 @@
1
+ import { DefinitionList } from '../types/definition-list';
1
2
  import { FieldCollectionMember } from '../types/field-collection-member';
2
- import { ListOf } from '../types/malloy-element';
3
- export declare class ProjectStatement extends ListOf<FieldCollectionMember> {
4
- constructor(members: FieldCollectionMember[]);
3
+ export declare class ProjectStatement extends DefinitionList<FieldCollectionMember> {
4
+ elementType: string;
5
5
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.ProjectStatement = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class ProjectStatement extends malloy_element_1.ListOf {
28
- constructor(members) {
29
- super('fieldCollection', members);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class ProjectStatement extends definition_list_1.DefinitionList {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'projectStatement';
30
31
  }
31
32
  }
32
33
  exports.ProjectStatement = ProjectStatement;
@@ -6,9 +6,9 @@ import { PipelineDesc } from '../elements/pipeline-desc';
6
6
  import { QueryProperty } from '../types/query-property';
7
7
  declare type QOPType = 'grouping' | 'aggregate' | 'project' | 'index';
8
8
  export declare class QOPDesc extends ListOf<QueryProperty> {
9
+ elementType: string;
9
10
  opType: QOPType;
10
11
  private refineThis?;
11
- constructor(props: QueryProperty[]);
12
12
  protected computeType(): QOPType;
13
13
  refineFrom(existing: PipeSegment): void;
14
14
  private getExecutor;
@@ -36,8 +36,9 @@ const struct_utils_1 = require("../struct-utils");
36
36
  const nest_1 = require("./nest");
37
37
  const static_space_1 = require("../field-space/static-space");
38
38
  class QOPDesc extends malloy_element_1.ListOf {
39
- constructor(props) {
40
- super('queryOperator', props);
39
+ constructor() {
40
+ super(...arguments);
41
+ this.elementType = 'queryOperation';
41
42
  this.opType = 'grouping';
42
43
  }
43
44
  computeType() {
@@ -7,5 +7,5 @@ export declare class RenameField extends MalloyElement {
7
7
  constructor(newName: string, oldName: FieldName);
8
8
  }
9
9
  export declare class Renames extends ListOf<RenameField> {
10
- constructor(renames: RenameField[]);
10
+ elementType: string;
11
11
  }
@@ -35,8 +35,9 @@ class RenameField extends malloy_element_1.MalloyElement {
35
35
  }
36
36
  exports.RenameField = RenameField;
37
37
  class Renames extends malloy_element_1.ListOf {
38
- constructor(renames) {
39
- super('renameField', renames);
38
+ constructor() {
39
+ super(...arguments);
40
+ this.elementType = 'renameFields';
40
41
  }
41
42
  }
42
43
  exports.Renames = Renames;
@@ -1,5 +1,5 @@
1
1
  import { TurtleDecl } from '../query-properties/nest';
2
- import { ListOf } from '../types/malloy-element';
3
- export declare class Turtles extends ListOf<TurtleDecl> {
4
- constructor(turtles: TurtleDecl[]);
2
+ import { DefinitionList } from '../types/definition-list';
3
+ export declare class Turtles extends DefinitionList<TurtleDecl> {
4
+ elementType: string;
5
5
  }
@@ -23,10 +23,11 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.Turtles = void 0;
26
- const malloy_element_1 = require("../types/malloy-element");
27
- class Turtles extends malloy_element_1.ListOf {
28
- constructor(turtles) {
29
- super('turtleDeclarationList', turtles);
26
+ const definition_list_1 = require("../types/definition-list");
27
+ class Turtles extends definition_list_1.DefinitionList {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.elementType = 'turtleDefList';
30
31
  }
31
32
  }
32
33
  exports.Turtles = Turtles;
@@ -0,0 +1,10 @@
1
+ import { Annotation } from '../../../model';
2
+ import { ListOf, MalloyElement } from './malloy-element';
3
+ import { Noteable } from '../types/noteable';
4
+ export declare abstract class DefinitionList<DT extends MalloyElement> extends ListOf<DT> implements Noteable {
5
+ readonly isNoteableObj = true;
6
+ note?: Annotation;
7
+ extendNote(ext: Partial<Annotation>): void;
8
+ distributeAnnotation(): void;
9
+ protected newContents(): void;
10
+ }