@malloydata/malloy 0.0.19-dev230106235212 → 0.0.19
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/malloy.d.ts +14 -3
- package/dist/malloy.js +29 -1
- package/dist/model/malloy_query.js +5 -0
- package/dist/model/malloy_types.d.ts +6 -2
- package/dist/model/malloy_types.js +3 -2
- package/package.json +1 -1
package/dist/malloy.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { InfoConnection } from ".";
|
|
3
3
|
import { DocumentHighlight as DocumentHighlightDefinition, DocumentSymbol as DocumentSymbolDefinition, DocumentCompletion as DocumentCompletionDefinition, LogMessage, MalloyTranslator } from "./lang";
|
|
4
4
|
import { DocumentHelpContext } from "./lang/parse-tree-walkers/document-help-context-walker";
|
|
5
|
-
import { CompiledQuery, FieldBooleanDef, FieldDateDef, FieldNumberDef, FieldStringDef, FieldTimestampDef, FieldTypeDef, FilterExpression, ModelDef, Query as InternalQuery, QueryData, QueryDataRow, QueryResult, StructDef, TurtleDef, SQLBlock, DocumentReference, DocumentPosition as ModelDocumentPosition, SearchIndexResult, SearchValueMapResult, NamedQuery, SQLBlockStructDef } from "./model";
|
|
5
|
+
import { CompiledQuery, FieldBooleanDef, FieldDateDef, FieldNumberDef, FieldStringDef, FieldTimestampDef, FieldTypeDef, FilterExpression, ModelDef, Query as InternalQuery, QueryData, QueryDataRow, QueryResult, StructDef, TurtleDef, SQLBlock, DocumentReference, DocumentPosition as ModelDocumentPosition, SearchIndexResult, SearchValueMapResult, NamedQuery, SQLBlockStructDef, FieldJSONDef } from "./model";
|
|
6
6
|
import { LookupConnection, ModelString, ModelURL, QueryString, QueryURL, URLReader, Connection } from "./runtime_types";
|
|
7
7
|
export interface Loggable {
|
|
8
8
|
debug: (message?: any, ...optionalParams: any[]) => void;
|
|
@@ -496,7 +496,8 @@ export declare enum AtomicFieldType {
|
|
|
496
496
|
Number = "number",
|
|
497
497
|
Boolean = "boolean",
|
|
498
498
|
Date = "date",
|
|
499
|
-
Timestamp = "timestamp"
|
|
499
|
+
Timestamp = "timestamp",
|
|
500
|
+
Json = "json"
|
|
500
501
|
}
|
|
501
502
|
export declare class AtomicField extends Entity {
|
|
502
503
|
protected fieldTypeDef: FieldTypeDef;
|
|
@@ -518,6 +519,7 @@ export declare class AtomicField extends Entity {
|
|
|
518
519
|
isNumber(): this is NumberField;
|
|
519
520
|
isDate(): this is DateField;
|
|
520
521
|
isBoolean(): this is BooleanField;
|
|
522
|
+
isJSON(): this is JSONField;
|
|
521
523
|
isTimestamp(): this is TimestampField;
|
|
522
524
|
get parentExplore(): Explore;
|
|
523
525
|
get expression(): string;
|
|
@@ -557,6 +559,10 @@ export declare class BooleanField extends AtomicField {
|
|
|
557
559
|
private fieldBooleanDef;
|
|
558
560
|
constructor(fieldBooleanDef: FieldBooleanDef, parent: Explore, source?: AtomicField);
|
|
559
561
|
}
|
|
562
|
+
export declare class JSONField extends AtomicField {
|
|
563
|
+
private fieldJSONDef;
|
|
564
|
+
constructor(fieldJSONDef: FieldJSONDef, parent: Explore, source?: AtomicField);
|
|
565
|
+
}
|
|
560
566
|
export declare class StringField extends AtomicField {
|
|
561
567
|
private fieldStringDef;
|
|
562
568
|
constructor(fieldStringDef: FieldStringDef, parent: Explore, source?: AtomicField);
|
|
@@ -1012,7 +1018,7 @@ export declare class Result extends PreparedResult {
|
|
|
1012
1018
|
toJSON(): ResultJSON;
|
|
1013
1019
|
static fromJSON({ queryResult, modelDef }: ResultJSON): Result;
|
|
1014
1020
|
}
|
|
1015
|
-
export declare type DataColumn = DataArray | DataRecord | DataString | DataBoolean | DataNumber | DataDate | DataTimestamp | DataNull | DataBytes;
|
|
1021
|
+
export declare type DataColumn = DataArray | DataRecord | DataString | DataBoolean | DataNumber | DataDate | DataTimestamp | DataNull | DataBytes | DataJSON;
|
|
1016
1022
|
export declare type DataArrayOrRecord = DataArray | DataRecord;
|
|
1017
1023
|
declare abstract class Data<T> {
|
|
1018
1024
|
protected _field: Field | Explore;
|
|
@@ -1055,6 +1061,11 @@ declare class DataBoolean extends ScalarData<boolean> {
|
|
|
1055
1061
|
constructor(value: boolean, field: BooleanField);
|
|
1056
1062
|
get field(): BooleanField;
|
|
1057
1063
|
}
|
|
1064
|
+
declare class DataJSON extends ScalarData<string> {
|
|
1065
|
+
protected _field: JSONField;
|
|
1066
|
+
constructor(value: string, field: JSONField);
|
|
1067
|
+
get field(): JSONField;
|
|
1068
|
+
}
|
|
1058
1069
|
declare class DataNumber extends ScalarData<number> {
|
|
1059
1070
|
protected _field: NumberField;
|
|
1060
1071
|
constructor(value: number, field: NumberField);
|
package/dist/malloy.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* GNU General Public License for more details.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.CSVWriter = exports.JSONWriter = exports.DataWriter = exports.DataRecord = exports.DataArray = exports.Result = exports.ExploreMaterializer = exports.SQLBlockMaterializer = exports.PreparedResultMaterializer = exports.QueryMaterializer = exports.ModelMaterializer = exports.SingleConnectionRuntime = exports.ConnectionRuntime = exports.Runtime = exports.ExploreField = exports.JoinRelationship = exports.QueryField = exports.Query = exports.StringField = exports.BooleanField = exports.NumberField = exports.TimestampField = exports.DateField = exports.TimestampTimeframe = exports.DateTimeframe = exports.AtomicField = exports.AtomicFieldType = exports.Explore = exports.SourceRelationship = exports.FixedConnectionMap = exports.InMemoryURLReader = exports.EmptyURLReader = exports.PreparedResult = exports.DocumentCompletion = exports.DocumentSymbol = exports.DocumentPosition = exports.DocumentRange = exports.DocumentHighlight = exports.Parse = exports.parseTableURI = exports.PreparedQuery = exports.Model = exports.MalloyError = exports.Malloy = void 0;
|
|
15
|
+
exports.CSVWriter = exports.JSONWriter = exports.DataWriter = exports.DataRecord = exports.DataArray = exports.Result = exports.ExploreMaterializer = exports.SQLBlockMaterializer = exports.PreparedResultMaterializer = exports.QueryMaterializer = exports.ModelMaterializer = exports.SingleConnectionRuntime = exports.ConnectionRuntime = exports.Runtime = exports.ExploreField = exports.JoinRelationship = exports.QueryField = exports.Query = exports.StringField = exports.JSONField = exports.BooleanField = exports.NumberField = exports.TimestampField = exports.DateField = exports.TimestampTimeframe = exports.DateTimeframe = exports.AtomicField = exports.AtomicFieldType = exports.Explore = exports.SourceRelationship = exports.FixedConnectionMap = exports.InMemoryURLReader = exports.EmptyURLReader = exports.PreparedResult = exports.DocumentCompletion = exports.DocumentSymbol = exports.DocumentPosition = exports.DocumentRange = exports.DocumentHighlight = exports.Parse = exports.parseTableURI = exports.PreparedQuery = exports.Model = exports.MalloyError = exports.Malloy = void 0;
|
|
16
16
|
const lang_1 = require("./lang");
|
|
17
17
|
const model_1 = require("./model");
|
|
18
18
|
class Malloy {
|
|
@@ -905,6 +905,9 @@ class Explore extends Entity {
|
|
|
905
905
|
else if (fieldDef.type === "boolean") {
|
|
906
906
|
return [name, new BooleanField(fieldDef, this, sourceField)];
|
|
907
907
|
}
|
|
908
|
+
else if (fieldDef.type === "json") {
|
|
909
|
+
return [name, new JSONField(fieldDef, this, sourceField)];
|
|
910
|
+
}
|
|
908
911
|
}
|
|
909
912
|
}));
|
|
910
913
|
}
|
|
@@ -972,6 +975,7 @@ var AtomicFieldType;
|
|
|
972
975
|
AtomicFieldType["Boolean"] = "boolean";
|
|
973
976
|
AtomicFieldType["Date"] = "date";
|
|
974
977
|
AtomicFieldType["Timestamp"] = "timestamp";
|
|
978
|
+
AtomicFieldType["Json"] = "json";
|
|
975
979
|
})(AtomicFieldType = exports.AtomicFieldType || (exports.AtomicFieldType = {}));
|
|
976
980
|
class AtomicField extends Entity {
|
|
977
981
|
constructor(fieldTypeDef, parent, source) {
|
|
@@ -991,6 +995,8 @@ class AtomicField extends Entity {
|
|
|
991
995
|
return AtomicFieldType.Timestamp;
|
|
992
996
|
case "number":
|
|
993
997
|
return AtomicFieldType.Number;
|
|
998
|
+
case "json":
|
|
999
|
+
return AtomicFieldType.Json;
|
|
994
1000
|
}
|
|
995
1001
|
}
|
|
996
1002
|
isIntrinsic() {
|
|
@@ -1046,6 +1052,9 @@ class AtomicField extends Entity {
|
|
|
1046
1052
|
isBoolean() {
|
|
1047
1053
|
return this instanceof BooleanField;
|
|
1048
1054
|
}
|
|
1055
|
+
isJSON() {
|
|
1056
|
+
return this instanceof JSONField;
|
|
1057
|
+
}
|
|
1049
1058
|
isTimestamp() {
|
|
1050
1059
|
return this instanceof TimestampField;
|
|
1051
1060
|
}
|
|
@@ -1147,6 +1156,13 @@ class BooleanField extends AtomicField {
|
|
|
1147
1156
|
}
|
|
1148
1157
|
}
|
|
1149
1158
|
exports.BooleanField = BooleanField;
|
|
1159
|
+
class JSONField extends AtomicField {
|
|
1160
|
+
constructor(fieldJSONDef, parent, source) {
|
|
1161
|
+
super(fieldJSONDef, parent, source);
|
|
1162
|
+
this.fieldJSONDef = fieldJSONDef;
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
exports.JSONField = JSONField;
|
|
1150
1166
|
class StringField extends AtomicField {
|
|
1151
1167
|
constructor(fieldStringDef, parent, source) {
|
|
1152
1168
|
super(fieldStringDef, parent, source);
|
|
@@ -2065,6 +2081,15 @@ class DataBoolean extends ScalarData {
|
|
|
2065
2081
|
return this._field;
|
|
2066
2082
|
}
|
|
2067
2083
|
}
|
|
2084
|
+
class DataJSON extends ScalarData {
|
|
2085
|
+
constructor(value, field) {
|
|
2086
|
+
super(value, field);
|
|
2087
|
+
this._field = field;
|
|
2088
|
+
}
|
|
2089
|
+
get field() {
|
|
2090
|
+
return this._field;
|
|
2091
|
+
}
|
|
2092
|
+
}
|
|
2068
2093
|
class DataNumber extends ScalarData {
|
|
2069
2094
|
constructor(value, field) {
|
|
2070
2095
|
super(value, field);
|
|
@@ -2218,6 +2243,9 @@ class DataRecord extends Data {
|
|
|
2218
2243
|
else if (field.isDate()) {
|
|
2219
2244
|
return new DataDate(value, field);
|
|
2220
2245
|
}
|
|
2246
|
+
else if (field.isJSON()) {
|
|
2247
|
+
return new DataJSON(value, field);
|
|
2248
|
+
}
|
|
2221
2249
|
else if (field.isTimestamp()) {
|
|
2222
2250
|
return new DataTimestamp(value, field);
|
|
2223
2251
|
}
|
|
@@ -509,6 +509,8 @@ class QueryFieldNumber extends QueryAtomicField {
|
|
|
509
509
|
}
|
|
510
510
|
class QueryFieldBoolean extends QueryAtomicField {
|
|
511
511
|
}
|
|
512
|
+
class QueryFieldJSON extends QueryAtomicField {
|
|
513
|
+
}
|
|
512
514
|
// in a query a struct can be referenced. The struct will
|
|
513
515
|
// emit the primary key field in the actual result set and
|
|
514
516
|
// will include the StructDef as a foreign key join in the output
|
|
@@ -1558,6 +1560,7 @@ class QueryQuery extends QueryField {
|
|
|
1558
1560
|
// build out the result fields...
|
|
1559
1561
|
switch (fi.f.fieldDef.type) {
|
|
1560
1562
|
case "boolean":
|
|
1563
|
+
case "json":
|
|
1561
1564
|
case "string":
|
|
1562
1565
|
fields.push({
|
|
1563
1566
|
name,
|
|
@@ -2774,6 +2777,8 @@ class QueryStruct extends QueryNode {
|
|
|
2774
2777
|
return new QueryFieldNumber(field, this);
|
|
2775
2778
|
case "boolean":
|
|
2776
2779
|
return new QueryFieldBoolean(field, this);
|
|
2780
|
+
case "json":
|
|
2781
|
+
return new QueryFieldJSON(field, this);
|
|
2777
2782
|
// case "reduce":
|
|
2778
2783
|
// case "project":
|
|
2779
2784
|
// case "index":
|
|
@@ -241,7 +241,7 @@ declare type HasExpression = FieldDef & JustExpression;
|
|
|
241
241
|
export declare function hasExpression(f: FieldDef): f is HasExpression;
|
|
242
242
|
export declare type TimeFieldType = "date" | "timestamp";
|
|
243
243
|
export declare function isTimeFieldType(s: string): s is TimeFieldType;
|
|
244
|
-
export declare type AtomicFieldType = "string" | "number" | TimeFieldType | "boolean";
|
|
244
|
+
export declare type AtomicFieldType = "string" | "number" | TimeFieldType | "boolean" | "json";
|
|
245
245
|
export declare function isAtomicFieldType(s: string): s is AtomicFieldType;
|
|
246
246
|
/** All scalars can have an optional expression */
|
|
247
247
|
export interface FieldAtomicDef extends NamedObject, Expression, ResultMetadata {
|
|
@@ -263,6 +263,10 @@ export interface FieldNumberDef extends FieldAtomicDef {
|
|
|
263
263
|
export interface FieldBooleanDef extends FieldAtomicDef {
|
|
264
264
|
type: "boolean";
|
|
265
265
|
}
|
|
266
|
+
/** Scalar JSON Field */
|
|
267
|
+
export interface FieldJSONDef extends FieldAtomicDef {
|
|
268
|
+
type: "json";
|
|
269
|
+
}
|
|
266
270
|
export declare type DateUnit = "day" | "week" | "month" | "quarter" | "year";
|
|
267
271
|
export declare function isDateUnit(str: string): str is DateUnit;
|
|
268
272
|
export declare type TimestampUnit = DateUnit | "hour" | "minute" | "second";
|
|
@@ -446,7 +450,7 @@ export interface SQLBlockStructDef extends StructDef {
|
|
|
446
450
|
}
|
|
447
451
|
export declare function isSQLBlock(sd: StructDef): sd is SQLBlockStructDef;
|
|
448
452
|
/** any of the different field types */
|
|
449
|
-
export declare type FieldTypeDef = FieldStringDef | FieldDateDef | FieldTimestampDef | FieldNumberDef | FieldBooleanDef;
|
|
453
|
+
export declare type FieldTypeDef = FieldStringDef | FieldDateDef | FieldTimestampDef | FieldNumberDef | FieldBooleanDef | FieldJSONDef;
|
|
450
454
|
export declare function isFieldTypeDef(f: FieldDef): f is FieldTypeDef;
|
|
451
455
|
export declare function isFieldTimeBased(f: FieldDef): f is FieldTimestampDef | FieldDateDef;
|
|
452
456
|
export declare function isFieldStructDef(f: FieldDef): f is StructDef;
|
|
@@ -187,7 +187,7 @@ function isTimeFieldType(s) {
|
|
|
187
187
|
}
|
|
188
188
|
exports.isTimeFieldType = isTimeFieldType;
|
|
189
189
|
function isAtomicFieldType(s) {
|
|
190
|
-
return ["string", "number", "date", "timestamp", "boolean"].includes(s);
|
|
190
|
+
return ["string", "number", "date", "timestamp", "boolean", "json"].includes(s);
|
|
191
191
|
}
|
|
192
192
|
exports.isAtomicFieldType = isAtomicFieldType;
|
|
193
193
|
// this field definition represents something in the database.
|
|
@@ -288,7 +288,8 @@ function isFieldTypeDef(f) {
|
|
|
288
288
|
f.type === "date" ||
|
|
289
289
|
f.type === "number" ||
|
|
290
290
|
f.type === "timestamp" ||
|
|
291
|
-
f.type === "boolean"
|
|
291
|
+
f.type === "boolean" ||
|
|
292
|
+
f.type === "json");
|
|
292
293
|
}
|
|
293
294
|
exports.isFieldTypeDef = isFieldTypeDef;
|
|
294
295
|
function isFieldTimeBased(f) {
|