@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 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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/malloy",
3
- "version": "0.0.19-dev230106235212",
3
+ "version": "0.0.19",
4
4
  "license": "GPL-2.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",