@malloydata/malloy 0.0.104-dev231117205713 → 0.0.104-dev231117214047
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.
- package/dist/lang/parse-malloy.d.ts +9 -1
- package/dist/lang/parse-malloy.js +28 -0
- package/dist/lang/parse-tree-walkers/model-annotation-walker.d.ts +5 -0
- package/dist/lang/parse-tree-walkers/model-annotation-walker.js +60 -0
- package/dist/lang/test/model-annotation-walker.spec.d.ts +1 -0
- package/dist/lang/test/model-annotation-walker.spec.js +46 -0
- package/dist/lang/translate-response.d.ts +5 -1
- package/dist/malloy.d.ts +3 -1
- package/dist/malloy.js +36 -4
- package/dist/run_sql_options.d.ts +3 -0
- package/dist/runtime_types.d.ts +2 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { DocumentLocation, DocumentPosition, DocumentRange, DocumentReference, I
|
|
|
3
3
|
import { LogMessage, MessageLog, MessageLogger } from './parse-log';
|
|
4
4
|
import { Zone, ZoneData } from './zone';
|
|
5
5
|
import { ReferenceList } from './reference-list';
|
|
6
|
-
import { ASTResponse, CompletionsResponse, DataRequestResponse, ProblemResponse, FatalResponse, FinalResponse, HelpContextResponse, MetadataResponse, ModelDataRequest, NeedURLData, TranslateResponse } from './translate-response';
|
|
6
|
+
import { ASTResponse, CompletionsResponse, DataRequestResponse, ProblemResponse, FatalResponse, FinalResponse, HelpContextResponse, MetadataResponse, ModelDataRequest, NeedURLData, TranslateResponse, ModelAnnotationResponse } from './translate-response';
|
|
7
7
|
import { Tag } from '../tags';
|
|
8
8
|
import { MalloyParseInfo } from './malloy-parse-info';
|
|
9
9
|
export type StepResponses = DataRequestResponse | ASTResponse | TranslateResponse | ParseResponse | MetadataResponse;
|
|
@@ -83,6 +83,12 @@ declare class HelpContextStep implements TranslationStep {
|
|
|
83
83
|
character: number;
|
|
84
84
|
}): HelpContextResponse;
|
|
85
85
|
}
|
|
86
|
+
declare class ModelAnnotationStep implements TranslationStep {
|
|
87
|
+
readonly parseStep: ParseStep;
|
|
88
|
+
response?: ModelAnnotationResponse;
|
|
89
|
+
constructor(parseStep: ParseStep);
|
|
90
|
+
step(that: MalloyTranslation, extendingModel?: ModelDef): ModelAnnotationResponse;
|
|
91
|
+
}
|
|
86
92
|
declare class TranslateStep implements TranslationStep {
|
|
87
93
|
readonly astStep: ASTStep;
|
|
88
94
|
response?: TranslateResponse;
|
|
@@ -103,6 +109,7 @@ export declare abstract class MalloyTranslation {
|
|
|
103
109
|
imports: ImportLocation[];
|
|
104
110
|
compilerFlags: Tag;
|
|
105
111
|
readonly parseStep: ParseStep;
|
|
112
|
+
readonly modelAnnotationStep: ModelAnnotationStep;
|
|
106
113
|
readonly importsAndTablesStep: ImportsAndTablesStep;
|
|
107
114
|
readonly astStep: ASTStep;
|
|
108
115
|
readonly metadataStep: MetadataStep;
|
|
@@ -136,6 +143,7 @@ export declare abstract class MalloyTranslation {
|
|
|
136
143
|
translate(extendingModel?: ModelDef): TranslateResponse;
|
|
137
144
|
importAt(position: DocumentPosition): ImportLocation | undefined;
|
|
138
145
|
metadata(): MetadataResponse;
|
|
146
|
+
modelAnnotation(extendingModel?: ModelDef): ModelAnnotationResponse;
|
|
139
147
|
completions(position: {
|
|
140
148
|
line: number;
|
|
141
149
|
character: number;
|
|
@@ -62,6 +62,7 @@ const reference_list_1 = require("./reference-list");
|
|
|
62
62
|
const translate_response_1 = require("./translate-response");
|
|
63
63
|
const utils_1 = require("./utils");
|
|
64
64
|
const tags_1 = require("../tags");
|
|
65
|
+
const model_annotation_walker_1 = require("./parse-tree-walkers/model-annotation-walker");
|
|
65
66
|
/**
|
|
66
67
|
* This ignores a -> popMode when the mode stack is empty, which is a hack,
|
|
67
68
|
* but it let's us parse }%
|
|
@@ -451,6 +452,29 @@ class HelpContextStep {
|
|
|
451
452
|
}
|
|
452
453
|
}
|
|
453
454
|
}
|
|
455
|
+
class ModelAnnotationStep {
|
|
456
|
+
constructor(parseStep) {
|
|
457
|
+
this.parseStep = parseStep;
|
|
458
|
+
}
|
|
459
|
+
step(that, extendingModel) {
|
|
460
|
+
if (!this.response) {
|
|
461
|
+
const tryParse = this.parseStep.step(that);
|
|
462
|
+
if (!tryParse.parse || tryParse.final) {
|
|
463
|
+
return tryParse;
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
const modelAnnotation = (0, model_annotation_walker_1.walkForModelAnnotation)(that, tryParse.parse.tokenStream, tryParse.parse);
|
|
467
|
+
this.response = {
|
|
468
|
+
modelAnnotation: {
|
|
469
|
+
...modelAnnotation,
|
|
470
|
+
inherits: extendingModel === null || extendingModel === void 0 ? void 0 : extendingModel.annotation,
|
|
471
|
+
},
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return this.response;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
454
478
|
class TranslateStep {
|
|
455
479
|
constructor(astStep) {
|
|
456
480
|
this.astStep = astStep;
|
|
@@ -545,6 +569,7 @@ class MalloyTranslation {
|
|
|
545
569
|
* things will happen automatically.
|
|
546
570
|
*/
|
|
547
571
|
this.parseStep = new ParseStep();
|
|
572
|
+
this.modelAnnotationStep = new ModelAnnotationStep(this.parseStep);
|
|
548
573
|
this.metadataStep = new MetadataStep(this.parseStep);
|
|
549
574
|
this.completionsStep = new CompletionsStep(this.parseStep);
|
|
550
575
|
this.helpContextStep = new HelpContextStep(this.parseStep);
|
|
@@ -703,6 +728,9 @@ class MalloyTranslation {
|
|
|
703
728
|
metadata() {
|
|
704
729
|
return this.metadataStep.step(this);
|
|
705
730
|
}
|
|
731
|
+
modelAnnotation(extendingModel) {
|
|
732
|
+
return this.modelAnnotationStep.step(this, extendingModel);
|
|
733
|
+
}
|
|
706
734
|
completions(position) {
|
|
707
735
|
return this.completionsStep.step(this, position);
|
|
708
736
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CommonTokenStream } from 'antlr4ts';
|
|
2
|
+
import { MalloyTranslation } from '../parse-malloy';
|
|
3
|
+
import { Annotation } from '../../model/malloy_types';
|
|
4
|
+
import { MalloyParseInfo } from '../malloy-parse-info';
|
|
5
|
+
export declare function walkForModelAnnotation(forParse: MalloyTranslation, tokens: CommonTokenStream, parseInfo: MalloyParseInfo): Annotation;
|
|
@@ -0,0 +1,60 @@
|
|
|
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 = void 0;
|
|
26
|
+
const ParseTreeWalker_1 = require("antlr4ts/tree/ParseTreeWalker");
|
|
27
|
+
class ModelAnnotationWalker {
|
|
28
|
+
constructor(translator, tokens, parseInfo) {
|
|
29
|
+
this.translator = translator;
|
|
30
|
+
this.tokens = tokens;
|
|
31
|
+
this.parseInfo = parseInfo;
|
|
32
|
+
this.notes = [];
|
|
33
|
+
}
|
|
34
|
+
getLocation(cx) {
|
|
35
|
+
return {
|
|
36
|
+
url: this.parseInfo.sourceURL,
|
|
37
|
+
range: this.parseInfo.rangeFromContext(cx),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
enterDocAnnotations(pcx) {
|
|
41
|
+
const allNotes = pcx.DOC_ANNOTATION().map(note => {
|
|
42
|
+
return {
|
|
43
|
+
text: note.text,
|
|
44
|
+
at: this.getLocation(pcx),
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
this.notes.push(...allNotes);
|
|
48
|
+
}
|
|
49
|
+
get annotation() {
|
|
50
|
+
return { notes: this.notes };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function walkForModelAnnotation(forParse, tokens, parseInfo) {
|
|
54
|
+
const finder = new ModelAnnotationWalker(forParse, tokens, parseInfo);
|
|
55
|
+
const listener = finder;
|
|
56
|
+
ParseTreeWalker_1.ParseTreeWalker.DEFAULT.walk(listener, parseInfo.root);
|
|
57
|
+
return finder.annotation;
|
|
58
|
+
}
|
|
59
|
+
exports.walkForModelAnnotation = walkForModelAnnotation;
|
|
60
|
+
//# sourceMappingURL=model-annotation-walker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
const test_translator_1 = require("./test-translator");
|
|
26
|
+
test('model annotations can be retrieved', () => {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
const src = (0, test_translator_1.markSource) `${'## foo'}`;
|
|
29
|
+
const doc = new test_translator_1.TestTranslator(src.code);
|
|
30
|
+
const { modelAnnotation } = doc.modelAnnotation();
|
|
31
|
+
expect((_a = modelAnnotation === null || modelAnnotation === void 0 ? void 0 : modelAnnotation.notes) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
|
|
32
|
+
const notes = (_b = modelAnnotation === null || modelAnnotation === void 0 ? void 0 : modelAnnotation.notes) !== null && _b !== void 0 ? _b : [];
|
|
33
|
+
expect(notes[0].text).toBe('## foo');
|
|
34
|
+
expect(notes[0].at).toMatchObject(src.locations[0]);
|
|
35
|
+
});
|
|
36
|
+
test('does not explode if bad parse', () => {
|
|
37
|
+
const src = (0, test_translator_1.markSource) `
|
|
38
|
+
${'## foo'}
|
|
39
|
+
asd afsjei ; duavby {{}}}
|
|
40
|
+
`;
|
|
41
|
+
const doc = new test_translator_1.TestTranslator(src.code);
|
|
42
|
+
const response = doc.modelAnnotation();
|
|
43
|
+
expect(response.modelAnnotation).toBe(undefined);
|
|
44
|
+
expect(response.final).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=model-annotation-walker.spec.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModelDef, Query, SQLBlockSource, SQLBlockStructDef } from '../model/malloy_types';
|
|
1
|
+
import { Annotation, ModelDef, Query, SQLBlockSource, SQLBlockStructDef } from '../model/malloy_types';
|
|
2
2
|
import { MalloyElement } from './ast';
|
|
3
3
|
import { LogMessage } from './parse-log';
|
|
4
4
|
import { DocumentSymbol } from './parse-tree-walkers/document-symbol-walker';
|
|
@@ -43,6 +43,10 @@ interface Metadata extends NeededData, ProblemResponse, FinalResponse {
|
|
|
43
43
|
highlights: DocumentHighlight[];
|
|
44
44
|
}
|
|
45
45
|
export type MetadataResponse = Partial<Metadata>;
|
|
46
|
+
interface ModelAnnotationData extends NeededData, ProblemResponse, FinalResponse {
|
|
47
|
+
modelAnnotation: Annotation;
|
|
48
|
+
}
|
|
49
|
+
export type ModelAnnotationResponse = Partial<ModelAnnotationData>;
|
|
46
50
|
interface Completions extends NeededData, ProblemResponse, FinalResponse {
|
|
47
51
|
completions: DocumentCompletion[];
|
|
48
52
|
}
|
package/dist/malloy.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { RunSQLOptions } from './run_sql_options';
|
|
3
3
|
import { DocumentCompletion as DocumentCompletionDefinition, DocumentHighlight as DocumentHighlightDefinition, DocumentSymbol as DocumentSymbolDefinition, LogMessage, MalloyTranslator } from './lang';
|
|
4
4
|
import { DocumentHelpContext } from './lang/parse-tree-walkers/document-help-context-walker';
|
|
5
|
-
import { CompiledQuery, DocumentLocation, DocumentReference, FieldBooleanDef, FieldDateDef, FieldJSONDef, FieldNumberDef, FieldStringDef, FieldTimestampDef, FieldTypeDef, FilterExpression, Query as InternalQuery, ModelDef, DocumentPosition as ModelDocumentPosition, NamedQuery, QueryData, QueryDataRow, QueryResult, SQLBlock, SQLBlockStructDef, SearchIndexResult, SearchValueMapResult, StructDef, TurtleDef, FieldUnsupportedDef, QueryRunStats, ImportLocation } from './model';
|
|
5
|
+
import { CompiledQuery, DocumentLocation, DocumentReference, FieldBooleanDef, FieldDateDef, FieldJSONDef, FieldNumberDef, FieldStringDef, FieldTimestampDef, FieldTypeDef, FilterExpression, Query as InternalQuery, ModelDef, DocumentPosition as ModelDocumentPosition, NamedQuery, QueryData, QueryDataRow, QueryResult, SQLBlock, SQLBlockStructDef, SearchIndexResult, SearchValueMapResult, StructDef, TurtleDef, FieldUnsupportedDef, QueryRunStats, ImportLocation, Annotation } from './model';
|
|
6
6
|
import { Connection, InfoConnection, LookupConnection, ModelString, ModelURL, QueryString, QueryURL, URLReader } from './runtime_types';
|
|
7
7
|
import { Tag, TagParse, TagParseSpec, Taggable } from './tags';
|
|
8
8
|
export interface Loggable {
|
|
@@ -425,6 +425,8 @@ export declare class PreparedResult implements Taggable {
|
|
|
425
425
|
constructor(query: CompiledQuery, modelDef: ModelDef);
|
|
426
426
|
tagParse(spec?: TagParseSpec): TagParse;
|
|
427
427
|
getTaglines(prefix?: RegExp): string[];
|
|
428
|
+
get annotation(): Annotation | undefined;
|
|
429
|
+
get modelAnnotation(): Annotation | undefined;
|
|
428
430
|
/**
|
|
429
431
|
* @return The name of the connection this query should be run against.
|
|
430
432
|
*/
|
package/dist/malloy.js
CHANGED
|
@@ -129,6 +129,7 @@ class Malloy {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
+
const { modelAnnotation } = translator.modelAnnotation(model === null || model === void 0 ? void 0 : model._modelDef);
|
|
132
133
|
if (result.tables) {
|
|
133
134
|
// collect tables by connection name since there may be multiple connections
|
|
134
135
|
const tablesByConnection = new Map();
|
|
@@ -151,6 +152,7 @@ class Malloy {
|
|
|
151
152
|
// the translator runs into an infinite loop fetching tables.
|
|
152
153
|
const { schemas: tables, errors } = await connection.fetchSchemaForTables(tablePathByKey, {
|
|
153
154
|
refreshTimestamp,
|
|
155
|
+
modelAnnotation,
|
|
154
156
|
});
|
|
155
157
|
translator.update({ tables, errors: { tables: errors } });
|
|
156
158
|
}
|
|
@@ -175,6 +177,7 @@ class Malloy {
|
|
|
175
177
|
const expanded = Malloy.compileSQLBlock(result.partialModel, toCompile);
|
|
176
178
|
const resolved = await conn.fetchSchemaForSQLBlock(expanded, {
|
|
177
179
|
refreshTimestamp,
|
|
180
|
+
modelAnnotation,
|
|
178
181
|
});
|
|
179
182
|
if (resolved.error) {
|
|
180
183
|
translator.update({
|
|
@@ -747,6 +750,12 @@ class PreparedResult {
|
|
|
747
750
|
getTaglines(prefix) {
|
|
748
751
|
return tags_1.Tag.annotationToTaglines(this.inner.annotation, prefix);
|
|
749
752
|
}
|
|
753
|
+
get annotation() {
|
|
754
|
+
return this.inner.annotation;
|
|
755
|
+
}
|
|
756
|
+
get modelAnnotation() {
|
|
757
|
+
return this.modelDef.annotation;
|
|
758
|
+
}
|
|
750
759
|
/**
|
|
751
760
|
* @return The name of the connection this query should be run against.
|
|
752
761
|
*/
|
|
@@ -2033,12 +2042,18 @@ class QueryMaterializer extends FluentState {
|
|
|
2033
2042
|
async run(options) {
|
|
2034
2043
|
const connections = this.runtime.connections;
|
|
2035
2044
|
const preparedResult = await this.getPreparedResult();
|
|
2036
|
-
|
|
2045
|
+
const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
|
|
2046
|
+
return Malloy.run({ connections, preparedResult, options: finalOptions });
|
|
2037
2047
|
}
|
|
2038
2048
|
async *runStream(options) {
|
|
2039
2049
|
const preparedResult = await this.getPreparedResult();
|
|
2040
2050
|
const connections = this.runtime.connections;
|
|
2041
|
-
const
|
|
2051
|
+
const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
|
|
2052
|
+
const stream = Malloy.runStream({
|
|
2053
|
+
connections,
|
|
2054
|
+
preparedResult,
|
|
2055
|
+
options: finalOptions,
|
|
2056
|
+
});
|
|
2042
2057
|
for await (const row of stream) {
|
|
2043
2058
|
yield row;
|
|
2044
2059
|
}
|
|
@@ -2090,6 +2105,13 @@ class QueryMaterializer extends FluentState {
|
|
|
2090
2105
|
}
|
|
2091
2106
|
}
|
|
2092
2107
|
exports.QueryMaterializer = QueryMaterializer;
|
|
2108
|
+
function runSQLOptionsWithAnnotations(preparedResult, givenOptions) {
|
|
2109
|
+
return {
|
|
2110
|
+
queryAnnotation: preparedResult.annotation,
|
|
2111
|
+
modelAnnotation: preparedResult.modelAnnotation,
|
|
2112
|
+
...givenOptions,
|
|
2113
|
+
};
|
|
2114
|
+
}
|
|
2093
2115
|
/**
|
|
2094
2116
|
* An object representing the task of loading a `PreparedResult`, capable of
|
|
2095
2117
|
* materializing the prepared result (via `getPreparedResult()`) or extending the task run
|
|
@@ -2104,12 +2126,22 @@ class PreparedResultMaterializer extends FluentState {
|
|
|
2104
2126
|
async run(options) {
|
|
2105
2127
|
const preparedResult = await this.getPreparedResult();
|
|
2106
2128
|
const connections = this.runtime.connections;
|
|
2107
|
-
|
|
2129
|
+
const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
|
|
2130
|
+
return Malloy.run({
|
|
2131
|
+
connections,
|
|
2132
|
+
preparedResult,
|
|
2133
|
+
options: finalOptions,
|
|
2134
|
+
});
|
|
2108
2135
|
}
|
|
2109
2136
|
async *runStream(options) {
|
|
2110
2137
|
const preparedResult = await this.getPreparedResult();
|
|
2111
2138
|
const connections = this.runtime.connections;
|
|
2112
|
-
const
|
|
2139
|
+
const finalOptions = runSQLOptionsWithAnnotations(preparedResult, options);
|
|
2140
|
+
const stream = Malloy.runStream({
|
|
2141
|
+
connections,
|
|
2142
|
+
preparedResult,
|
|
2143
|
+
options: finalOptions,
|
|
2144
|
+
});
|
|
2113
2145
|
for await (const row of stream) {
|
|
2114
2146
|
yield row;
|
|
2115
2147
|
}
|
package/dist/runtime_types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RunSQLOptions } from './run_sql_options';
|
|
2
|
-
import { MalloyQueryData, QueryDataRow, QueryRunStats, SQLBlock, StructDef } from './model/malloy_types';
|
|
2
|
+
import { Annotation, MalloyQueryData, QueryDataRow, QueryRunStats, SQLBlock, StructDef } from './model/malloy_types';
|
|
3
3
|
import { Dialect } from './dialect';
|
|
4
4
|
/**
|
|
5
5
|
* The contents of a Malloy query document.
|
|
@@ -34,6 +34,7 @@ export interface URLReader {
|
|
|
34
34
|
*/
|
|
35
35
|
export interface FetchSchemaOptions {
|
|
36
36
|
refreshTimestamp?: number;
|
|
37
|
+
modelAnnotation?: Annotation;
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
40
|
* An object capable of reading schemas for given table names.
|