@milaboratories/pl-model-common 1.40.0 → 1.41.1

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.
@@ -1,5 +1,5 @@
1
1
  import { AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, FilteredPColumn, FilteredPColumnId, isFilteredPColumn } from "./pframe/spec/filtered_column.js";
2
- import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./pframe/spec/discovered_column.js";
2
+ import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./pframe/spec/discovered_column.js";
3
3
  import { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId } from "./pframe/spec/ids.js";
4
4
  import { Annotation, AnnotationDataStatus, AnnotationJson, AxesId, AxesSpec, AxisId, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, ColumnValueType, Domain, DomainJson, Metadata, MetadataJson, PAxisName, PColumn, PColumnIdAndSpec, PColumnInfo, PColumnLazy, PColumnName, PColumnSpec, PColumnSpecId, PDataColumnSpec, PUniversalColumnSpec, Trace, TraceEntry, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents } from "./pframe/spec/spec.js";
5
5
  import { AnchoredIdDeriver, ResolveAnchorsOptions, resolveAnchors } from "./pframe/spec/anchored.js";
@@ -1,5 +1,5 @@
1
1
  import { AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, FilteredPColumn, FilteredPColumnId, isFilteredPColumn } from "./spec/filtered_column.js";
2
- import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./spec/discovered_column.js";
2
+ import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./spec/discovered_column.js";
3
3
  import { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId } from "./spec/ids.js";
4
4
  import { Annotation, AnnotationDataStatus, AnnotationJson, AxesId, AxesSpec, AxisId, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, ColumnValueType, Domain, DomainJson, Metadata, MetadataJson, PAxisName, PColumn, PColumnIdAndSpec, PColumnInfo, PColumnLazy, PColumnName, PColumnSpec, PColumnSpecId, PDataColumnSpec, PUniversalColumnSpec, Trace, TraceEntry, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents } from "./spec/spec.js";
5
5
  import { AnchoredIdDeriver, ResolveAnchorsOptions, resolveAnchors } from "./spec/anchored.js";
@@ -5,11 +5,16 @@ let _milaboratories_helpers = require("@milaboratories/helpers");
5
5
  function isDiscoveredPColumn(obj) {
6
6
  return typeof obj === "object" && obj !== null && "path" in obj && "column" in obj && "columnQualifications" in obj && "queriesQualifications" in obj;
7
7
  }
8
- function createDiscoveredPColumn(props) {
9
- return JSON.parse(JSON.stringify(props));
8
+ function distillDiscoveredPColumn(props) {
9
+ return {
10
+ column: props.column,
11
+ path: Array.isArray(props.path) && props.path.length > 0 ? props.path : void 0,
12
+ columnQualifications: Array.isArray(props.columnQualifications) && props.columnQualifications.length > 0 ? props.columnQualifications : void 0,
13
+ queriesQualifications: props.queriesQualifications && Object.keys(props.queriesQualifications).length > 0 ? props.queriesQualifications : void 0
14
+ };
10
15
  }
11
16
  function createDiscoveredPColumnId(props) {
12
- return stringifyDiscoveredPColumnId(createDiscoveredPColumn(props));
17
+ return stringifyDiscoveredPColumnId(props);
13
18
  }
14
19
  function parseDiscoveredPColumnId(id) {
15
20
  try {
@@ -20,11 +25,11 @@ function parseDiscoveredPColumnId(id) {
20
25
  }
21
26
  }
22
27
  function stringifyDiscoveredPColumnId(id) {
23
- return require_json.canonicalizeJson(id);
28
+ return require_json.canonicalizeJson(distillDiscoveredPColumn(id));
24
29
  }
25
30
  //#endregion
26
- exports.createDiscoveredPColumn = createDiscoveredPColumn;
27
31
  exports.createDiscoveredPColumnId = createDiscoveredPColumnId;
32
+ exports.distillDiscoveredPColumn = distillDiscoveredPColumn;
28
33
  exports.isDiscoveredPColumn = isDiscoveredPColumn;
29
34
  exports.parseDiscoveredPColumnId = parseDiscoveredPColumnId;
30
35
  exports.stringifyDiscoveredPColumnId = stringifyDiscoveredPColumnId;
@@ -1 +1 @@
1
- {"version":3,"file":"discovered_column.cjs","names":["canonicalizeJson"],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"sourcesContent":["import { Branded, throwError } from \"@milaboratories/helpers\";\nimport { PObjectId } from \"../../../pool\";\nimport { AxisQualification } from \"./selectors\";\nimport { canonicalizeJson } from \"../../../json\";\n\nexport type DiscoveredPColumn = {\n path: PathItem[];\n column: PObjectId;\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n};\n\nexport type DiscoveredPColumnId = Branded<PObjectId, \"DiscoveredPColumnId\">; // CanonicalizedJson<DiscoveredPColumn>;\n\ntype PathItem = {\n type: \"linker\";\n column: PObjectId;\n};\n\nexport function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"path\" in obj &&\n \"column\" in obj &&\n \"columnQualifications\" in obj &&\n \"queriesQualifications\" in obj\n );\n}\n\nexport function createDiscoveredPColumn(props: {\n column: PObjectId;\n path: PathItem[];\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumn {\n return JSON.parse(JSON.stringify(props));\n}\n\nexport function createDiscoveredPColumnId(props: {\n column: PObjectId;\n path: PathItem[];\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumnId {\n return stringifyDiscoveredPColumnId(createDiscoveredPColumn(props));\n}\n\nexport function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn {\n try {\n const parsed = JSON.parse(id);\n return isDiscoveredPColumn(parsed)\n ? parsed\n : throwError(\"Parsed object is not a valid DiscoveredPColumn\");\n } catch {\n throw new Error(\n \"Invalid DiscoveredPColumnId: not a valid JSON or does not conform to DiscoveredPColumn structure\",\n );\n }\n}\n\nexport function stringifyDiscoveredPColumnId(id: DiscoveredPColumn) {\n return canonicalizeJson<DiscoveredPColumn>(id) as string as DiscoveredPColumnId;\n}\n"],"mappings":";;;;AAmBA,SAAgB,oBAAoB,KAAwC;AAC1E,QACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,YAAY,OACZ,0BAA0B,OAC1B,2BAA2B;;AAI/B,SAAgB,wBAAwB,OAKlB;AACpB,QAAO,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;;AAG1C,SAAgB,0BAA0B,OAKlB;AACtB,QAAO,6BAA6B,wBAAwB,MAAM,CAAC;;AAGrE,SAAgB,yBAAyB,IAA4C;AACnF,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,SAAO,oBAAoB,OAAO,GAC9B,UAAA,GAAA,wBAAA,YACW,iDAAiD;SAC1D;AACN,QAAM,IAAI,MACR,mGACD;;;AAIL,SAAgB,6BAA6B,IAAuB;AAClE,QAAOA,aAAAA,iBAAoC,GAAG"}
1
+ {"version":3,"file":"discovered_column.cjs","names":["canonicalizeJson"],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"sourcesContent":["import { Branded, throwError } from \"@milaboratories/helpers\";\nimport { PObjectId } from \"../../../pool\";\nimport { AxisQualification } from \"./selectors\";\nimport { canonicalizeJson } from \"../../../json\";\n\nexport type DiscoveredPColumn = {\n column: PObjectId;\n path?: PathItem[];\n columnQualifications?: AxisQualification[];\n queriesQualifications?: Record<PObjectId, AxisQualification[]>;\n};\n\nexport type DiscoveredPColumnId = Branded<PObjectId, \"DiscoveredPColumnId\">; // CanonicalizedJson<DiscoveredPColumn>;\n\ntype PathItem = {\n type: \"linker\";\n column: PObjectId;\n};\n\nexport function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"path\" in obj &&\n \"column\" in obj &&\n \"columnQualifications\" in obj &&\n \"queriesQualifications\" in obj\n );\n}\n\nexport function distillDiscoveredPColumn(props: DiscoveredPColumn): DiscoveredPColumn {\n return {\n column: props.column,\n path: Array.isArray(props.path) && props.path.length > 0 ? props.path : undefined,\n columnQualifications:\n Array.isArray(props.columnQualifications) && props.columnQualifications.length > 0\n ? props.columnQualifications\n : undefined,\n queriesQualifications:\n props.queriesQualifications && Object.keys(props.queriesQualifications).length > 0\n ? props.queriesQualifications\n : undefined,\n };\n}\n\nexport function createDiscoveredPColumnId(props: {\n column: PObjectId;\n path?: PathItem[];\n columnQualifications?: AxisQualification[];\n queriesQualifications?: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumnId {\n return stringifyDiscoveredPColumnId(props);\n}\n\nexport function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn {\n try {\n const parsed = JSON.parse(id);\n return isDiscoveredPColumn(parsed)\n ? parsed\n : throwError(\"Parsed object is not a valid DiscoveredPColumn\");\n } catch {\n throw new Error(\n \"Invalid DiscoveredPColumnId: not a valid JSON or does not conform to DiscoveredPColumn structure\",\n );\n }\n}\n\nexport function stringifyDiscoveredPColumnId(id: DiscoveredPColumn) {\n return canonicalizeJson<DiscoveredPColumn>(\n distillDiscoveredPColumn(id),\n ) as string as DiscoveredPColumnId;\n}\n"],"mappings":";;;;AAmBA,SAAgB,oBAAoB,KAAwC;AAC1E,QACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,YAAY,OACZ,0BAA0B,OAC1B,2BAA2B;;AAI/B,SAAgB,yBAAyB,OAA6C;AACpF,QAAO;EACL,QAAQ,MAAM;EACd,MAAM,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,OAAO,KAAA;EACxE,sBACE,MAAM,QAAQ,MAAM,qBAAqB,IAAI,MAAM,qBAAqB,SAAS,IAC7E,MAAM,uBACN,KAAA;EACN,uBACE,MAAM,yBAAyB,OAAO,KAAK,MAAM,sBAAsB,CAAC,SAAS,IAC7E,MAAM,wBACN,KAAA;EACP;;AAGH,SAAgB,0BAA0B,OAKlB;AACtB,QAAO,6BAA6B,MAAM;;AAG5C,SAAgB,yBAAyB,IAA4C;AACnF,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,SAAO,oBAAoB,OAAO,GAC9B,UAAA,GAAA,wBAAA,YACW,iDAAiD;SAC1D;AACN,QAAM,IAAI,MACR,mGACD;;;AAIL,SAAgB,6BAA6B,IAAuB;AAClE,QAAOA,aAAAA,iBACL,yBAAyB,GAAG,CAC7B"}
@@ -4,10 +4,10 @@ import { Branded } from "@milaboratories/helpers";
4
4
 
5
5
  //#region src/drivers/pframe/spec/discovered_column.d.ts
6
6
  type DiscoveredPColumn = {
7
- path: PathItem[];
8
7
  column: PObjectId;
9
- columnQualifications: AxisQualification[];
10
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
8
+ path?: PathItem[];
9
+ columnQualifications?: AxisQualification[];
10
+ queriesQualifications?: Record<PObjectId, AxisQualification[]>;
11
11
  };
12
12
  type DiscoveredPColumnId = Branded<PObjectId, "DiscoveredPColumnId">;
13
13
  type PathItem = {
@@ -15,20 +15,15 @@ type PathItem = {
15
15
  column: PObjectId;
16
16
  };
17
17
  declare function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn;
18
- declare function createDiscoveredPColumn(props: {
19
- column: PObjectId;
20
- path: PathItem[];
21
- columnQualifications: AxisQualification[];
22
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
23
- }): DiscoveredPColumn;
18
+ declare function distillDiscoveredPColumn(props: DiscoveredPColumn): DiscoveredPColumn;
24
19
  declare function createDiscoveredPColumnId(props: {
25
20
  column: PObjectId;
26
- path: PathItem[];
27
- columnQualifications: AxisQualification[];
28
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
21
+ path?: PathItem[];
22
+ columnQualifications?: AxisQualification[];
23
+ queriesQualifications?: Record<PObjectId, AxisQualification[]>;
29
24
  }): DiscoveredPColumnId;
30
25
  declare function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn;
31
26
  declare function stringifyDiscoveredPColumnId(id: DiscoveredPColumn): DiscoveredPColumnId;
32
27
  //#endregion
33
- export { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId };
28
+ export { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId };
34
29
  //# sourceMappingURL=discovered_column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovered_column.d.ts","names":[],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"mappings":";;;;;KAKY,iBAAA;EACV,IAAA,EAAM,QAAA;EACN,MAAA,EAAQ,SAAA;EACR,oBAAA,EAAsB,iBAAA;EACtB,qBAAA,EAAuB,MAAA,CAAO,SAAA,EAAW,iBAAA;AAAA;AAAA,KAG/B,mBAAA,GAAsB,OAAA,CAAQ,SAAA;AAAA,KAErC,QAAA;EACH,IAAA;EACA,MAAA,EAAQ,SAAA;AAAA;AAAA,iBAGM,mBAAA,CAAoB,GAAA,YAAe,GAAA,IAAO,iBAAA;AAAA,iBAW1C,uBAAA,CAAwB,KAAA;EACtC,MAAA,EAAQ,SAAA;EACR,IAAA,EAAM,QAAA;EACN,oBAAA,EAAsB,iBAAA;EACtB,qBAAA,EAAuB,MAAA,CAAO,SAAA,EAAW,iBAAA;AAAA,IACvC,iBAAA;AAAA,iBAIY,yBAAA,CAA0B,KAAA;EACxC,MAAA,EAAQ,SAAA;EACR,IAAA,EAAM,QAAA;EACN,oBAAA,EAAsB,iBAAA;EACtB,qBAAA,EAAuB,MAAA,CAAO,SAAA,EAAW,iBAAA;AAAA,IACvC,mBAAA;AAAA,iBAIY,wBAAA,CAAyB,EAAA,EAAI,mBAAA,GAAsB,iBAAA;AAAA,iBAanD,4BAAA,CAA6B,EAAA,EAAI,iBAAA,GACa,mBAAA"}
1
+ {"version":3,"file":"discovered_column.d.ts","names":[],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"mappings":";;;;;KAKY,iBAAA;EACV,MAAA,EAAQ,SAAA;EACR,IAAA,GAAO,QAAA;EACP,oBAAA,GAAuB,iBAAA;EACvB,qBAAA,GAAwB,MAAA,CAAO,SAAA,EAAW,iBAAA;AAAA;AAAA,KAGhC,mBAAA,GAAsB,OAAA,CAAQ,SAAA;AAAA,KAErC,QAAA;EACH,IAAA;EACA,MAAA,EAAQ,SAAA;AAAA;AAAA,iBAGM,mBAAA,CAAoB,GAAA,YAAe,GAAA,IAAO,iBAAA;AAAA,iBAW1C,wBAAA,CAAyB,KAAA,EAAO,iBAAA,GAAoB,iBAAA;AAAA,iBAepD,yBAAA,CAA0B,KAAA;EACxC,MAAA,EAAQ,SAAA;EACR,IAAA,GAAO,QAAA;EACP,oBAAA,GAAuB,iBAAA;EACvB,qBAAA,GAAwB,MAAA,CAAO,SAAA,EAAW,iBAAA;AAAA,IACxC,mBAAA;AAAA,iBAIY,wBAAA,CAAyB,EAAA,EAAI,mBAAA,GAAsB,iBAAA;AAAA,iBAanD,4BAAA,CAA6B,EAAA,EAAI,iBAAA,GAGhC,mBAAA"}
@@ -4,11 +4,16 @@ import { throwError } from "@milaboratories/helpers";
4
4
  function isDiscoveredPColumn(obj) {
5
5
  return typeof obj === "object" && obj !== null && "path" in obj && "column" in obj && "columnQualifications" in obj && "queriesQualifications" in obj;
6
6
  }
7
- function createDiscoveredPColumn(props) {
8
- return JSON.parse(JSON.stringify(props));
7
+ function distillDiscoveredPColumn(props) {
8
+ return {
9
+ column: props.column,
10
+ path: Array.isArray(props.path) && props.path.length > 0 ? props.path : void 0,
11
+ columnQualifications: Array.isArray(props.columnQualifications) && props.columnQualifications.length > 0 ? props.columnQualifications : void 0,
12
+ queriesQualifications: props.queriesQualifications && Object.keys(props.queriesQualifications).length > 0 ? props.queriesQualifications : void 0
13
+ };
9
14
  }
10
15
  function createDiscoveredPColumnId(props) {
11
- return stringifyDiscoveredPColumnId(createDiscoveredPColumn(props));
16
+ return stringifyDiscoveredPColumnId(props);
12
17
  }
13
18
  function parseDiscoveredPColumnId(id) {
14
19
  try {
@@ -19,9 +24,9 @@ function parseDiscoveredPColumnId(id) {
19
24
  }
20
25
  }
21
26
  function stringifyDiscoveredPColumnId(id) {
22
- return canonicalizeJson(id);
27
+ return canonicalizeJson(distillDiscoveredPColumn(id));
23
28
  }
24
29
  //#endregion
25
- export { createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId };
30
+ export { createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId };
26
31
 
27
32
  //# sourceMappingURL=discovered_column.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovered_column.js","names":[],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"sourcesContent":["import { Branded, throwError } from \"@milaboratories/helpers\";\nimport { PObjectId } from \"../../../pool\";\nimport { AxisQualification } from \"./selectors\";\nimport { canonicalizeJson } from \"../../../json\";\n\nexport type DiscoveredPColumn = {\n path: PathItem[];\n column: PObjectId;\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n};\n\nexport type DiscoveredPColumnId = Branded<PObjectId, \"DiscoveredPColumnId\">; // CanonicalizedJson<DiscoveredPColumn>;\n\ntype PathItem = {\n type: \"linker\";\n column: PObjectId;\n};\n\nexport function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"path\" in obj &&\n \"column\" in obj &&\n \"columnQualifications\" in obj &&\n \"queriesQualifications\" in obj\n );\n}\n\nexport function createDiscoveredPColumn(props: {\n column: PObjectId;\n path: PathItem[];\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumn {\n return JSON.parse(JSON.stringify(props));\n}\n\nexport function createDiscoveredPColumnId(props: {\n column: PObjectId;\n path: PathItem[];\n columnQualifications: AxisQualification[];\n queriesQualifications: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumnId {\n return stringifyDiscoveredPColumnId(createDiscoveredPColumn(props));\n}\n\nexport function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn {\n try {\n const parsed = JSON.parse(id);\n return isDiscoveredPColumn(parsed)\n ? parsed\n : throwError(\"Parsed object is not a valid DiscoveredPColumn\");\n } catch {\n throw new Error(\n \"Invalid DiscoveredPColumnId: not a valid JSON or does not conform to DiscoveredPColumn structure\",\n );\n }\n}\n\nexport function stringifyDiscoveredPColumnId(id: DiscoveredPColumn) {\n return canonicalizeJson<DiscoveredPColumn>(id) as string as DiscoveredPColumnId;\n}\n"],"mappings":";;;AAmBA,SAAgB,oBAAoB,KAAwC;AAC1E,QACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,YAAY,OACZ,0BAA0B,OAC1B,2BAA2B;;AAI/B,SAAgB,wBAAwB,OAKlB;AACpB,QAAO,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;;AAG1C,SAAgB,0BAA0B,OAKlB;AACtB,QAAO,6BAA6B,wBAAwB,MAAM,CAAC;;AAGrE,SAAgB,yBAAyB,IAA4C;AACnF,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,SAAO,oBAAoB,OAAO,GAC9B,SACA,WAAW,iDAAiD;SAC1D;AACN,QAAM,IAAI,MACR,mGACD;;;AAIL,SAAgB,6BAA6B,IAAuB;AAClE,QAAO,iBAAoC,GAAG"}
1
+ {"version":3,"file":"discovered_column.js","names":[],"sources":["../../../../src/drivers/pframe/spec/discovered_column.ts"],"sourcesContent":["import { Branded, throwError } from \"@milaboratories/helpers\";\nimport { PObjectId } from \"../../../pool\";\nimport { AxisQualification } from \"./selectors\";\nimport { canonicalizeJson } from \"../../../json\";\n\nexport type DiscoveredPColumn = {\n column: PObjectId;\n path?: PathItem[];\n columnQualifications?: AxisQualification[];\n queriesQualifications?: Record<PObjectId, AxisQualification[]>;\n};\n\nexport type DiscoveredPColumnId = Branded<PObjectId, \"DiscoveredPColumnId\">; // CanonicalizedJson<DiscoveredPColumn>;\n\ntype PathItem = {\n type: \"linker\";\n column: PObjectId;\n};\n\nexport function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"path\" in obj &&\n \"column\" in obj &&\n \"columnQualifications\" in obj &&\n \"queriesQualifications\" in obj\n );\n}\n\nexport function distillDiscoveredPColumn(props: DiscoveredPColumn): DiscoveredPColumn {\n return {\n column: props.column,\n path: Array.isArray(props.path) && props.path.length > 0 ? props.path : undefined,\n columnQualifications:\n Array.isArray(props.columnQualifications) && props.columnQualifications.length > 0\n ? props.columnQualifications\n : undefined,\n queriesQualifications:\n props.queriesQualifications && Object.keys(props.queriesQualifications).length > 0\n ? props.queriesQualifications\n : undefined,\n };\n}\n\nexport function createDiscoveredPColumnId(props: {\n column: PObjectId;\n path?: PathItem[];\n columnQualifications?: AxisQualification[];\n queriesQualifications?: Record<PObjectId, AxisQualification[]>;\n}): DiscoveredPColumnId {\n return stringifyDiscoveredPColumnId(props);\n}\n\nexport function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn {\n try {\n const parsed = JSON.parse(id);\n return isDiscoveredPColumn(parsed)\n ? parsed\n : throwError(\"Parsed object is not a valid DiscoveredPColumn\");\n } catch {\n throw new Error(\n \"Invalid DiscoveredPColumnId: not a valid JSON or does not conform to DiscoveredPColumn structure\",\n );\n }\n}\n\nexport function stringifyDiscoveredPColumnId(id: DiscoveredPColumn) {\n return canonicalizeJson<DiscoveredPColumn>(\n distillDiscoveredPColumn(id),\n ) as string as DiscoveredPColumnId;\n}\n"],"mappings":";;;AAmBA,SAAgB,oBAAoB,KAAwC;AAC1E,QACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,YAAY,OACZ,0BAA0B,OAC1B,2BAA2B;;AAI/B,SAAgB,yBAAyB,OAA6C;AACpF,QAAO;EACL,QAAQ,MAAM;EACd,MAAM,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,OAAO,KAAA;EACxE,sBACE,MAAM,QAAQ,MAAM,qBAAqB,IAAI,MAAM,qBAAqB,SAAS,IAC7E,MAAM,uBACN,KAAA;EACN,uBACE,MAAM,yBAAyB,OAAO,KAAK,MAAM,sBAAsB,CAAC,SAAS,IAC7E,MAAM,wBACN,KAAA;EACP;;AAGH,SAAgB,0BAA0B,OAKlB;AACtB,QAAO,6BAA6B,MAAM;;AAG5C,SAAgB,yBAAyB,IAA4C;AACnF,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,SAAO,oBAAoB,OAAO,GAC9B,SACA,WAAW,iDAAiD;SAC1D;AACN,QAAM,IAAI,MACR,mGACD;;;AAIL,SAAgB,6BAA6B,IAAuB;AAClE,QAAO,iBACL,yBAAyB,GAAG,CAC7B"}
@@ -1,5 +1,5 @@
1
1
  import { AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, FilteredPColumn, FilteredPColumnId, isFilteredPColumn } from "./filtered_column.js";
2
- import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./discovered_column.js";
2
+ import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./discovered_column.js";
3
3
  import { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId } from "./ids.js";
4
4
  import { Annotation, AnnotationDataStatus, AnnotationJson, AxesId, AxesSpec, AxisId, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, ColumnValueType, Domain, DomainJson, Metadata, MetadataJson, PAxisName, PColumn, PColumnIdAndSpec, PColumnInfo, PColumnLazy, PColumnName, PColumnSpec, PColumnSpecId, PDataColumnSpec, PUniversalColumnSpec, Trace, TraceEntry, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents } from "./spec.js";
5
5
  import { AnchoredIdDeriver, ResolveAnchorsOptions, resolveAnchors } from "./anchored.js";
package/dist/index.cjs CHANGED
@@ -98,7 +98,6 @@ exports.canonicalizeAxisWithParents = require_spec.canonicalizeAxisWithParents;
98
98
  exports.canonicalizeJson = require_json.canonicalizeJson;
99
99
  exports.checkBlockFlag = require_flag_utils.checkBlockFlag;
100
100
  exports.collectSpecQueryColumns = require_utils.collectSpecQueryColumns;
101
- exports.createDiscoveredPColumn = require_discovered_column.createDiscoveredPColumn;
102
101
  exports.createDiscoveredPColumnId = require_discovered_column.createDiscoveredPColumnId;
103
102
  exports.createEnrichmentRef = require_ref.createEnrichmentRef;
104
103
  exports.createNodeServiceHandlers = require_node_service_handlers.createNodeServiceHandlers;
@@ -109,6 +108,7 @@ exports.deriveNativeId = require_native_id.deriveNativeId;
109
108
  exports.deserializeError = require_errors.deserializeError;
110
109
  exports.deserializeResult = require_errors.deserializeResult;
111
110
  exports.digestPlId = require_plid.digestPlId;
111
+ exports.distillDiscoveredPColumn = require_discovered_column.distillDiscoveredPColumn;
112
112
  exports.ensureError = require_errors.ensureError;
113
113
  exports.ensurePColumn = require_spec$1.ensurePColumn;
114
114
  exports.entriesToDataInfo = require_data_info.entriesToDataInfo;
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ import { Branded } from "./branding.js";
7
7
  import { DialogService, FileFilter, ShowSaveDialogOptions, ShowSaveDialogResult } from "./dialog/index.js";
8
8
  import { PoolEntry, PoolEntryGuard } from "./pool_entry.js";
9
9
  import { AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, FilteredPColumn, FilteredPColumnId, isFilteredPColumn } from "./drivers/pframe/spec/filtered_column.js";
10
- import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./drivers/pframe/spec/discovered_column.js";
10
+ import { DiscoveredPColumn, DiscoveredPColumnId, createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./drivers/pframe/spec/discovered_column.js";
11
11
  import { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId } from "./drivers/pframe/spec/ids.js";
12
12
  import { Annotation, AnnotationDataStatus, AnnotationJson, AxesId, AxesSpec, AxisId, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, ColumnValueType, Domain, DomainJson, Metadata, MetadataJson, PAxisName, PColumn, PColumnIdAndSpec, PColumnInfo, PColumnLazy, PColumnName, PColumnSpec, PColumnSpecId, PDataColumnSpec, PUniversalColumnSpec, Trace, TraceEntry, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents } from "./drivers/pframe/spec/spec.js";
13
13
  import { AnchoredIdDeriver, ResolveAnchorsOptions, resolveAnchors } from "./drivers/pframe/spec/anchored.js";
@@ -64,4 +64,4 @@ import { assertNever, uniqueBy } from "./util.js";
64
64
  import { BasicHttpAuth, HttpAuth, parseHttpAuth, serializeHttpAuth } from "./httpAuth.js";
65
65
  import { ResourceTypeName, ResourceTypePrefix } from "./resource_types.js";
66
66
  import { ProjectId } from "./project_id.js";
67
- export { AAxisSelector, ADomain, AbortError, AllRequiresFeatureFlags, AllSupportsFeatureFlags, AnchorAxisIdOrRefBasic, AnchorAxisRef, AnchorAxisRefByIdx, AnchorAxisRefByMatcher, AnchorAxisRefByName, AnchorDomainRef, AnchoredColumnMatchStrategy, AnchoredIdDeriver, AnchoredPColumnId, AnchoredPColumnSelector, Annotation, AnnotationDataStatus, AnnotationJson, AnyFunction, AnyLogHandle, ArchiveFormat, ArrayTypeUnion, ArtificialColumnJoinEntry, Assert, AssertKeysEqual, AuthorMarker, AxesId, AxesSpec, AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, AxisId, AxisQualification, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, Base64Compatible, Base64Encoded, BasicHttpAuth, BinaryChunk, BinaryPartitionedDataInfo, BinaryPartitionedDataInfoEntries, BlobDriver, BlobHandleAndSize, BlobLike, BlobToURLDriver, BlockCodeFeatureFlags, BlockCodeKnownFeatureFlags, BlockCodeWithInfo, BlockConfigContainer, BlockConfigGeneric, BlockConfigV3Generic, BlockConfigV4Generic, BlockOutputsBase, BlockRenderingMode, BlockSection, BlockSectionDelimiter, BlockSectionLink, BlockSectionLinkAppearance, BlockState, BlockStateV3, BlockUIURL, Branded, BuildQueryInput, CalculateTableDataRequest, CalculateTableDataResponse, CanonicalizedJson, ChunkedStreamReader, ChunkedStreamReaderOptions, Code, ColumnAxesWithQualifications, ColumnFilter, ColumnJoinEntry, ColumnValueType, CompositeLinkerMap, ConstantAxisFilter, ContentHandler, CreateEnrichmentRefOptions, DataExprAxisRef, DataExprColumnRef, DataInfo, DataInfoEntries, DataQuery, DataQueryBooleanExpression, DataQueryColumn, DataQueryExpression, DataQueryFilter, DataQueryInlineColumn, DataQueryJoinEntry, DataQueryLinkerJoin, DataQueryLinkerJoinLinker, DataQueryOuterJoin, DataQuerySliceAxes, DataQuerySort, DataQuerySparseToDenseColumn, DataQuerySymmetricJoin, DatasetInput, DefaultNavigationState, DeleteColumnRequest, DeleteColumnResponse, DialogService, DiscoverColumnsConstraints, DiscoverColumnsFilterStep, DiscoverColumnsLinkerStep, DiscoverColumnsMappingVariant, DiscoverColumnsRequest, DiscoverColumnsResponse, DiscoverColumnsResponseHit, DiscoverColumnsResponseQualifications, DiscoverColumnsStepInfo, DiscoveredPColumn, DiscoveredPColumnId, Domain, DomainJson, DriverKit, EnrichmentLinkerStep, EnrichmentRef, EnrichmentStep, ErrorHandlerStatus, EvaluateQueryResponse, FileFilter, FileLike, FileRange, FilterKeysByPrefix, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilteredPColumn, FilteredPColumnId, FindColumnsRequest, FindColumnsResponse, FolderURL, FrontendDriver, FullJoin, FullPTableColumnData, GetContentOptions, HttpAuth, ImportFileHandle, ImportFileHandleIndex, ImportFileHandleUpload, ImportProgress, ImportStatus, IncompatibleFlagsError, InferFilterSpecCommonLeaf, InferFilterSpecCommonNode, InferFilterSpecLeaf, InferFilterSpecLeafColumn, InferServiceKind, InferServiceModel, InferServiceUi, InlineColumnJoinEntry, InnerJoin, Is, IsSubtypeOf, JoinEntry, JsonCompatible, JsonDataInfo, JsonDataInfoEntries, JsonPartitionedDataInfo, JsonPartitionedDataInfoEntries, JsonSerializable, KnownServiceName, LabeledEnrichmentRef, LabeledEnrichmentRefs, LegacyAxisSelector, LinkerMap, ListFilesResult, ListOptionBase, LiveLogHandle, LocalBlobHandle, LocalBlobHandleAndSize, LocalImportFileHandle, LogsDriver, LsDriver, LsEntry, MODEL_SERVICE_METHOD_MAP, MatcherMap, Metadata, MetadataJson, ModelServiceFactoryMap, ModelServiceRegistry, ModelServices, MultiAxisSelector, MultiColumnSelector, NativePObjectId, NavigationState, NodeServiceHandlerMap, OpenDialogFilter, OpenDialogOps, OpenMultipleFilesResponse, OpenSingleFileResponse, Option, OuterJoin, OutputWithStatus, PAxisName, PColumn, PColumnDataEntry, PColumnIdAndSpec, PColumnInfo, PColumnKey, PColumnLazy, PColumnName, PColumnSelector, PColumnSpec, PColumnSpecId, PColumnValue, PColumnValues, PColumnValuesEntry, PDataColumnSpec, PFrame, PFrameDef, PFrameDriver, PFrameDriverError, PFrameError, PFrameHandle, PFrameModelDriver, PFrameSpecDriver, PFrameSpecDriverError, PObject, PObjectId, PObjectSpec, PSpecPredicate, PTable, PTableColumnId, PTableColumnIdAxis, PTableColumnIdColumn, PTableColumnSpec, PTableColumnSpecAxis, PTableColumnSpecColumn, PTableDef, PTableDefV2, PTableDownloadCompression, PTableDownloadFormat, PTableHandle, PTableNA, PTableRecordFilter, PTableRecordSingleValueFilterV2, PTableShape, PTableSorting, PTableValue, PTableValueAxis, PTableValueBranded, PTableValueData, PTableValueDataBranded, PTableValueDouble, PTableValueFloat, PTableValueInt, PTableValueLong, PTableValueString, PTableVector, PTableVectorTyped, PUniversalColumnSpec, PVectorData, PVectorDataBytes, PVectorDataDouble, PVectorDataFloat, PVectorDataInt, PVectorDataLong, PVectorDataString, PVectorDataTyped, ParquetChunk, ParquetChunkMapping, ParquetChunkMappingAxis, ParquetChunkMappingColumn, ParquetChunkMetadata, ParquetChunkStats, ParquetPartitionedDataInfo, ParquetPartitionedDataInfoEntries, PartitionedDataInfoEntries, PlId, PlIdBytes, PlIdLength, PlRef, PoolEntry, PoolEntryGuard, PrimaryRef, ProgressLogWithInfo, ProjectId, REQUIRES_PFRAMES_VERSION, RangeBytes, ReadyLogHandle, Ref, RemoteBlobHandle, RemoteBlobHandleAndSize, RequireServices, ResolveAnchorsOptions, ResourceTypeName, ResourceTypePrefix, ResultCollection, ResultOrError, ResultPoolEntry, RootFilterSpec, RuntimeCapabilities, SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, SERVICE_METHOD_MAP, SUniversalPColumnId, SerializedError, ServiceAlreadyRegisteredError, ServiceBrand, ServiceDispatch, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceName, ServiceNameLiterals, ServiceNotRegisteredError, ServiceRequireFlags, ServiceType, ServiceTypesLike, Services, ShowSaveDialogOptions, ShowSaveDialogResult, SingleAxisSelector, SingleValueAndPredicateV2, SingleValueEqualPredicate, SingleValueGreaterOrEqualPredicate, SingleValueGreaterPredicate, SingleValueIEqualPredicate, SingleValueInSetPredicate, SingleValueIsNAPredicate, SingleValueLessOrEqualPredicate, SingleValueLessPredicate, SingleValueMatchesPredicate, SingleValueNotPredicateV2, SingleValueOrPredicateV2, SingleValuePredicateV2, SingleValueStringContainsFuzzyPredicate, SingleValueStringContainsPredicate, SingleValueStringIContainsFuzzyPredicate, SingleValueStringIContainsPredicate, SlicedColumnJoinEntry, SpecExprAxisRef, SpecExprColumnRef, SpecFrameHandle, SpecQuery, SpecQueryBooleanExpression, SpecQueryColumn, SpecQueryExpression, SpecQueryFilter, SpecQueryInlineColumn, SpecQueryJoinEntry, SpecQueryLinkerJoin, SpecQueryLinkerJoinLinker, SpecQueryOuterJoin, SpecQuerySliceAxes, SpecQuerySort, SpecQuerySparseToDenseColumn, SpecQuerySymmetricJoin, StorageEntry, StorageHandle, StorageHandleLocal, StorageHandleRemote, StreamingApiResponse, StreamingApiResponseHandleOutdated, StreamingApiResponseOk, StringMatcher, StringifiedJson, SupportedRequirement, TableRange, Trace, TraceEntry, UiError, UiServiceFactoryMap, UiServiceRegistry, UiServices, UniqueValuesRequest, UniqueValuesResponse, UniversalPColumnId, ValueOrError, ValueType, ValueTypeSupported, ValueWithUTag, ValueWithUTagAndAuthor, WritePTableToFsOptions, WritePTableToFsResult, assertNever, base64Decode, base64Encode, bigintReplacer, buildServiceInfo, canonicalizeAxisId, canonicalizeAxisWithParents, canonicalizeJson, checkBlockFlag, collectSpecQueryColumns, createDiscoveredPColumn, createDiscoveredPColumnId, createEnrichmentRef, createNodeServiceHandlers, createPlRef, createPrimaryRef, dataInfoToEntries, deriveNativeId, deserializeError, deserializeResult, digestPlId, ensureError, ensurePColumn, entriesToDataInfo, executePSpecPredicate, extractAllColumns, extractAllRequirements, extractAllSupports, extractCodeWithInfo, extractConfigGeneric, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getFileNameFromHandle, getFilePathFromHandle, getMethodNames, getNormalizedAxesList, getPColumnSpecId, getPTableColumnId, getServiceKind, getServiceModelMethods, getServiceUiMethods, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, hasAbortError, isAbortError, isAggregateError, isAnchoredPColumnId, isAnyLogHandle, isAxisId, isBlockUIURL, isBooleanExpression, isDataInfo, isDataInfoEntries, isDiscoveredPColumn, isEnrichmentRef, isFilteredPColumn, isFolderURL, isImportFileHandleIndex, isImportFileHandleUpload, isKnownServiceName, isLabelColumn, isLinkerColumn, isLiveLog, isMainService, isNodeService, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isPTableNA, isPartitionedDataInfoEntries, isPlRef, isPrimaryRef, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, isValueNA, isWasmService, legacyColumnSelectorsToPredicate, mapDataInfo, mapDataInfoEntries, mapJoinEntry, mapPObjectData, mapPTableDef, mapPTableDefV2, mapSpecQueryColumns, mapValueInVOE, matchAxis, matchAxisId, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate, newRangeBytesOpt, pTableValue, pTableValueBranded, parseColumnId, parseDiscoveredPColumnId, parseHttpAuth, parseJson, plId, plRefsEqual, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, registerServiceCapabilities, resolveAnchors, resolveAnnotationParents, resolveNodeServiceHandler, resolveRequiredServices, serializeError, serializeHttpAuth, serializeResult, service, serviceFnKey, sortJoinEntry, sortPTableDef, sortSpecQuery, stringifyColumnId, stringifyDiscoveredPColumnId, stringifyJson, traverseQuerySpec, uniqueBy, uniquePlId, unwrapResult, validateRangeBytes, visitDataInfo, withEnrichments, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };
67
+ export { AAxisSelector, ADomain, AbortError, AllRequiresFeatureFlags, AllSupportsFeatureFlags, AnchorAxisIdOrRefBasic, AnchorAxisRef, AnchorAxisRefByIdx, AnchorAxisRefByMatcher, AnchorAxisRefByName, AnchorDomainRef, AnchoredColumnMatchStrategy, AnchoredIdDeriver, AnchoredPColumnId, AnchoredPColumnSelector, Annotation, AnnotationDataStatus, AnnotationJson, AnyFunction, AnyLogHandle, ArchiveFormat, ArrayTypeUnion, ArtificialColumnJoinEntry, Assert, AssertKeysEqual, AuthorMarker, AxesId, AxesSpec, AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, AxisId, AxisQualification, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, Base64Compatible, Base64Encoded, BasicHttpAuth, BinaryChunk, BinaryPartitionedDataInfo, BinaryPartitionedDataInfoEntries, BlobDriver, BlobHandleAndSize, BlobLike, BlobToURLDriver, BlockCodeFeatureFlags, BlockCodeKnownFeatureFlags, BlockCodeWithInfo, BlockConfigContainer, BlockConfigGeneric, BlockConfigV3Generic, BlockConfigV4Generic, BlockOutputsBase, BlockRenderingMode, BlockSection, BlockSectionDelimiter, BlockSectionLink, BlockSectionLinkAppearance, BlockState, BlockStateV3, BlockUIURL, Branded, BuildQueryInput, CalculateTableDataRequest, CalculateTableDataResponse, CanonicalizedJson, ChunkedStreamReader, ChunkedStreamReaderOptions, Code, ColumnAxesWithQualifications, ColumnFilter, ColumnJoinEntry, ColumnValueType, CompositeLinkerMap, ConstantAxisFilter, ContentHandler, CreateEnrichmentRefOptions, DataExprAxisRef, DataExprColumnRef, DataInfo, DataInfoEntries, DataQuery, DataQueryBooleanExpression, DataQueryColumn, DataQueryExpression, DataQueryFilter, DataQueryInlineColumn, DataQueryJoinEntry, DataQueryLinkerJoin, DataQueryLinkerJoinLinker, DataQueryOuterJoin, DataQuerySliceAxes, DataQuerySort, DataQuerySparseToDenseColumn, DataQuerySymmetricJoin, DatasetInput, DefaultNavigationState, DeleteColumnRequest, DeleteColumnResponse, DialogService, DiscoverColumnsConstraints, DiscoverColumnsFilterStep, DiscoverColumnsLinkerStep, DiscoverColumnsMappingVariant, DiscoverColumnsRequest, DiscoverColumnsResponse, DiscoverColumnsResponseHit, DiscoverColumnsResponseQualifications, DiscoverColumnsStepInfo, DiscoveredPColumn, DiscoveredPColumnId, Domain, DomainJson, DriverKit, EnrichmentLinkerStep, EnrichmentRef, EnrichmentStep, ErrorHandlerStatus, EvaluateQueryResponse, FileFilter, FileLike, FileRange, FilterKeysByPrefix, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilteredPColumn, FilteredPColumnId, FindColumnsRequest, FindColumnsResponse, FolderURL, FrontendDriver, FullJoin, FullPTableColumnData, GetContentOptions, HttpAuth, ImportFileHandle, ImportFileHandleIndex, ImportFileHandleUpload, ImportProgress, ImportStatus, IncompatibleFlagsError, InferFilterSpecCommonLeaf, InferFilterSpecCommonNode, InferFilterSpecLeaf, InferFilterSpecLeafColumn, InferServiceKind, InferServiceModel, InferServiceUi, InlineColumnJoinEntry, InnerJoin, Is, IsSubtypeOf, JoinEntry, JsonCompatible, JsonDataInfo, JsonDataInfoEntries, JsonPartitionedDataInfo, JsonPartitionedDataInfoEntries, JsonSerializable, KnownServiceName, LabeledEnrichmentRef, LabeledEnrichmentRefs, LegacyAxisSelector, LinkerMap, ListFilesResult, ListOptionBase, LiveLogHandle, LocalBlobHandle, LocalBlobHandleAndSize, LocalImportFileHandle, LogsDriver, LsDriver, LsEntry, MODEL_SERVICE_METHOD_MAP, MatcherMap, Metadata, MetadataJson, ModelServiceFactoryMap, ModelServiceRegistry, ModelServices, MultiAxisSelector, MultiColumnSelector, NativePObjectId, NavigationState, NodeServiceHandlerMap, OpenDialogFilter, OpenDialogOps, OpenMultipleFilesResponse, OpenSingleFileResponse, Option, OuterJoin, OutputWithStatus, PAxisName, PColumn, PColumnDataEntry, PColumnIdAndSpec, PColumnInfo, PColumnKey, PColumnLazy, PColumnName, PColumnSelector, PColumnSpec, PColumnSpecId, PColumnValue, PColumnValues, PColumnValuesEntry, PDataColumnSpec, PFrame, PFrameDef, PFrameDriver, PFrameDriverError, PFrameError, PFrameHandle, PFrameModelDriver, PFrameSpecDriver, PFrameSpecDriverError, PObject, PObjectId, PObjectSpec, PSpecPredicate, PTable, PTableColumnId, PTableColumnIdAxis, PTableColumnIdColumn, PTableColumnSpec, PTableColumnSpecAxis, PTableColumnSpecColumn, PTableDef, PTableDefV2, PTableDownloadCompression, PTableDownloadFormat, PTableHandle, PTableNA, PTableRecordFilter, PTableRecordSingleValueFilterV2, PTableShape, PTableSorting, PTableValue, PTableValueAxis, PTableValueBranded, PTableValueData, PTableValueDataBranded, PTableValueDouble, PTableValueFloat, PTableValueInt, PTableValueLong, PTableValueString, PTableVector, PTableVectorTyped, PUniversalColumnSpec, PVectorData, PVectorDataBytes, PVectorDataDouble, PVectorDataFloat, PVectorDataInt, PVectorDataLong, PVectorDataString, PVectorDataTyped, ParquetChunk, ParquetChunkMapping, ParquetChunkMappingAxis, ParquetChunkMappingColumn, ParquetChunkMetadata, ParquetChunkStats, ParquetPartitionedDataInfo, ParquetPartitionedDataInfoEntries, PartitionedDataInfoEntries, PlId, PlIdBytes, PlIdLength, PlRef, PoolEntry, PoolEntryGuard, PrimaryRef, ProgressLogWithInfo, ProjectId, REQUIRES_PFRAMES_VERSION, RangeBytes, ReadyLogHandle, Ref, RemoteBlobHandle, RemoteBlobHandleAndSize, RequireServices, ResolveAnchorsOptions, ResourceTypeName, ResourceTypePrefix, ResultCollection, ResultOrError, ResultPoolEntry, RootFilterSpec, RuntimeCapabilities, SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, SERVICE_METHOD_MAP, SUniversalPColumnId, SerializedError, ServiceAlreadyRegisteredError, ServiceBrand, ServiceDispatch, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceName, ServiceNameLiterals, ServiceNotRegisteredError, ServiceRequireFlags, ServiceType, ServiceTypesLike, Services, ShowSaveDialogOptions, ShowSaveDialogResult, SingleAxisSelector, SingleValueAndPredicateV2, SingleValueEqualPredicate, SingleValueGreaterOrEqualPredicate, SingleValueGreaterPredicate, SingleValueIEqualPredicate, SingleValueInSetPredicate, SingleValueIsNAPredicate, SingleValueLessOrEqualPredicate, SingleValueLessPredicate, SingleValueMatchesPredicate, SingleValueNotPredicateV2, SingleValueOrPredicateV2, SingleValuePredicateV2, SingleValueStringContainsFuzzyPredicate, SingleValueStringContainsPredicate, SingleValueStringIContainsFuzzyPredicate, SingleValueStringIContainsPredicate, SlicedColumnJoinEntry, SpecExprAxisRef, SpecExprColumnRef, SpecFrameHandle, SpecQuery, SpecQueryBooleanExpression, SpecQueryColumn, SpecQueryExpression, SpecQueryFilter, SpecQueryInlineColumn, SpecQueryJoinEntry, SpecQueryLinkerJoin, SpecQueryLinkerJoinLinker, SpecQueryOuterJoin, SpecQuerySliceAxes, SpecQuerySort, SpecQuerySparseToDenseColumn, SpecQuerySymmetricJoin, StorageEntry, StorageHandle, StorageHandleLocal, StorageHandleRemote, StreamingApiResponse, StreamingApiResponseHandleOutdated, StreamingApiResponseOk, StringMatcher, StringifiedJson, SupportedRequirement, TableRange, Trace, TraceEntry, UiError, UiServiceFactoryMap, UiServiceRegistry, UiServices, UniqueValuesRequest, UniqueValuesResponse, UniversalPColumnId, ValueOrError, ValueType, ValueTypeSupported, ValueWithUTag, ValueWithUTagAndAuthor, WritePTableToFsOptions, WritePTableToFsResult, assertNever, base64Decode, base64Encode, bigintReplacer, buildServiceInfo, canonicalizeAxisId, canonicalizeAxisWithParents, canonicalizeJson, checkBlockFlag, collectSpecQueryColumns, createDiscoveredPColumnId, createEnrichmentRef, createNodeServiceHandlers, createPlRef, createPrimaryRef, dataInfoToEntries, deriveNativeId, deserializeError, deserializeResult, digestPlId, distillDiscoveredPColumn, ensureError, ensurePColumn, entriesToDataInfo, executePSpecPredicate, extractAllColumns, extractAllRequirements, extractAllSupports, extractCodeWithInfo, extractConfigGeneric, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getFileNameFromHandle, getFilePathFromHandle, getMethodNames, getNormalizedAxesList, getPColumnSpecId, getPTableColumnId, getServiceKind, getServiceModelMethods, getServiceUiMethods, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, hasAbortError, isAbortError, isAggregateError, isAnchoredPColumnId, isAnyLogHandle, isAxisId, isBlockUIURL, isBooleanExpression, isDataInfo, isDataInfoEntries, isDiscoveredPColumn, isEnrichmentRef, isFilteredPColumn, isFolderURL, isImportFileHandleIndex, isImportFileHandleUpload, isKnownServiceName, isLabelColumn, isLinkerColumn, isLiveLog, isMainService, isNodeService, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isPTableNA, isPartitionedDataInfoEntries, isPlRef, isPrimaryRef, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, isValueNA, isWasmService, legacyColumnSelectorsToPredicate, mapDataInfo, mapDataInfoEntries, mapJoinEntry, mapPObjectData, mapPTableDef, mapPTableDefV2, mapSpecQueryColumns, mapValueInVOE, matchAxis, matchAxisId, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate, newRangeBytesOpt, pTableValue, pTableValueBranded, parseColumnId, parseDiscoveredPColumnId, parseHttpAuth, parseJson, plId, plRefsEqual, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, registerServiceCapabilities, resolveAnchors, resolveAnnotationParents, resolveNodeServiceHandler, resolveRequiredServices, serializeError, serializeHttpAuth, serializeResult, service, serviceFnKey, sortJoinEntry, sortPTableDef, sortSpecQuery, stringifyColumnId, stringifyDiscoveredPColumnId, stringifyJson, traverseQuerySpec, uniqueBy, uniquePlId, unwrapResult, validateRangeBytes, visitDataInfo, withEnrichments, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ import { ensurePColumn, extractAllColumns, isPColumn, isPColumnResult, isPColumn
22
22
  import { executePSpecPredicate } from "./pool/query.js";
23
23
  import { isAnchoredPColumnId, legacyColumnSelectorsToPredicate, matchAxis, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate } from "./drivers/pframe/spec/selectors.js";
24
24
  import { deriveNativeId } from "./drivers/pframe/spec/native_id.js";
25
- import { createDiscoveredPColumn, createDiscoveredPColumnId, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./drivers/pframe/spec/discovered_column.js";
25
+ import { createDiscoveredPColumnId, distillDiscoveredPColumn, isDiscoveredPColumn, parseDiscoveredPColumnId, stringifyDiscoveredPColumnId } from "./drivers/pframe/spec/discovered_column.js";
26
26
  import { LinkerMap } from "./drivers/pframe/linker_columns.js";
27
27
  import { ChunkedStreamReader } from "./drivers/ChunkedStreamReader.js";
28
28
  import "./drivers/index.js";
@@ -43,4 +43,4 @@ import { createNodeServiceHandlers } from "./services/node_service_handlers.js";
43
43
  import { MODEL_SERVICE_METHOD_MAP, SERVICE_METHOD_MAP, buildServiceInfo, resolveNodeServiceHandler } from "./services/service_injectors.js";
44
44
  import "./services/index.js";
45
45
  import { PoolEntryGuard } from "./pool_entry.js";
46
- export { AbortError, AllRequiresFeatureFlags, AllSupportsFeatureFlags, AnchoredIdDeriver, Annotation, AnnotationJson, ChunkedStreamReader, Code, DefaultNavigationState, Domain, DomainJson, IncompatibleFlagsError, LinkerMap, MODEL_SERVICE_METHOD_MAP, ModelServiceRegistry, PAxisName, PColumnName, PFrameDriverError, PFrameError, PFrameSpecDriverError, PTableNA, PlId, PlIdBytes, PlIdLength, PlRef, PoolEntryGuard, REQUIRES_PFRAMES_VERSION, RangeBytes, ResourceTypeName, ResourceTypePrefix, RuntimeCapabilities, SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, SERVICE_METHOD_MAP, ServiceAlreadyRegisteredError, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceNotRegisteredError, Services, UiError, UiServiceRegistry, ValueType, assertNever, base64Decode, base64Encode, bigintReplacer, buildServiceInfo, canonicalizeAxisId, canonicalizeAxisWithParents, canonicalizeJson, checkBlockFlag, collectSpecQueryColumns, createDiscoveredPColumn, createDiscoveredPColumnId, createEnrichmentRef, createNodeServiceHandlers, createPlRef, createPrimaryRef, dataInfoToEntries, deriveNativeId, deserializeError, deserializeResult, digestPlId, ensureError, ensurePColumn, entriesToDataInfo, executePSpecPredicate, extractAllColumns, extractAllRequirements, extractAllSupports, extractCodeWithInfo, extractConfigGeneric, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getFileNameFromHandle, getFilePathFromHandle, getMethodNames, getNormalizedAxesList, getPColumnSpecId, getPTableColumnId, getServiceKind, getServiceModelMethods, getServiceUiMethods, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, hasAbortError, isAbortError, isAggregateError, isAnchoredPColumnId, isAnyLogHandle, isAxisId, isBlockUIURL, isBooleanExpression, isDataInfo, isDataInfoEntries, isDiscoveredPColumn, isEnrichmentRef, isFilteredPColumn, isFolderURL, isImportFileHandleIndex, isImportFileHandleUpload, isKnownServiceName, isLabelColumn, isLinkerColumn, isLiveLog, isMainService, isNodeService, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isPTableNA, isPartitionedDataInfoEntries, isPlRef, isPrimaryRef, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, isValueNA, isWasmService, legacyColumnSelectorsToPredicate, mapDataInfo, mapDataInfoEntries, mapJoinEntry, mapPObjectData, mapPTableDef, mapPTableDefV2, mapSpecQueryColumns, mapValueInVOE, matchAxis, matchAxisId, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate, newRangeBytesOpt, pTableValue, pTableValueBranded, parseColumnId, parseDiscoveredPColumnId, parseHttpAuth, parseJson, plId, plRefsEqual, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, registerServiceCapabilities, resolveAnchors, resolveAnnotationParents, resolveNodeServiceHandler, resolveRequiredServices, serializeError, serializeHttpAuth, serializeResult, service, serviceFnKey, sortJoinEntry, sortPTableDef, sortSpecQuery, stringifyColumnId, stringifyDiscoveredPColumnId, stringifyJson, traverseQuerySpec, uniqueBy, uniquePlId, unwrapResult, validateRangeBytes, visitDataInfo, withEnrichments, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };
46
+ export { AbortError, AllRequiresFeatureFlags, AllSupportsFeatureFlags, AnchoredIdDeriver, Annotation, AnnotationJson, ChunkedStreamReader, Code, DefaultNavigationState, Domain, DomainJson, IncompatibleFlagsError, LinkerMap, MODEL_SERVICE_METHOD_MAP, ModelServiceRegistry, PAxisName, PColumnName, PFrameDriverError, PFrameError, PFrameSpecDriverError, PTableNA, PlId, PlIdBytes, PlIdLength, PlRef, PoolEntryGuard, REQUIRES_PFRAMES_VERSION, RangeBytes, ResourceTypeName, ResourceTypePrefix, RuntimeCapabilities, SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, SERVICE_METHOD_MAP, ServiceAlreadyRegisteredError, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceNotRegisteredError, Services, UiError, UiServiceRegistry, ValueType, assertNever, base64Decode, base64Encode, bigintReplacer, buildServiceInfo, canonicalizeAxisId, canonicalizeAxisWithParents, canonicalizeJson, checkBlockFlag, collectSpecQueryColumns, createDiscoveredPColumnId, createEnrichmentRef, createNodeServiceHandlers, createPlRef, createPrimaryRef, dataInfoToEntries, deriveNativeId, deserializeError, deserializeResult, digestPlId, distillDiscoveredPColumn, ensureError, ensurePColumn, entriesToDataInfo, executePSpecPredicate, extractAllColumns, extractAllRequirements, extractAllSupports, extractCodeWithInfo, extractConfigGeneric, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getFileNameFromHandle, getFilePathFromHandle, getMethodNames, getNormalizedAxesList, getPColumnSpecId, getPTableColumnId, getServiceKind, getServiceModelMethods, getServiceUiMethods, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, hasAbortError, isAbortError, isAggregateError, isAnchoredPColumnId, isAnyLogHandle, isAxisId, isBlockUIURL, isBooleanExpression, isDataInfo, isDataInfoEntries, isDiscoveredPColumn, isEnrichmentRef, isFilteredPColumn, isFolderURL, isImportFileHandleIndex, isImportFileHandleUpload, isKnownServiceName, isLabelColumn, isLinkerColumn, isLiveLog, isMainService, isNodeService, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isPTableNA, isPartitionedDataInfoEntries, isPlRef, isPrimaryRef, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, isValueNA, isWasmService, legacyColumnSelectorsToPredicate, mapDataInfo, mapDataInfoEntries, mapJoinEntry, mapPObjectData, mapPTableDef, mapPTableDefV2, mapSpecQueryColumns, mapValueInVOE, matchAxis, matchAxisId, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate, newRangeBytesOpt, pTableValue, pTableValueBranded, parseColumnId, parseDiscoveredPColumnId, parseHttpAuth, parseJson, plId, plRefsEqual, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, registerServiceCapabilities, resolveAnchors, resolveAnnotationParents, resolveNodeServiceHandler, resolveRequiredServices, serializeError, serializeHttpAuth, serializeResult, service, serviceFnKey, sortJoinEntry, sortPTableDef, sortSpecQuery, stringifyColumnId, stringifyDiscoveredPColumnId, stringifyJson, traverseQuerySpec, uniqueBy, uniquePlId, unwrapResult, validateRangeBytes, visitDataInfo, withEnrichments, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-model-common",
3
- "version": "1.40.0",
3
+ "version": "1.41.1",
4
4
  "description": "Platforma SDK Model",
5
5
  "files": [
6
6
  "./dist/**/*",
@@ -19,15 +19,15 @@
19
19
  "dependencies": {
20
20
  "canonicalize": "~2.1.0",
21
21
  "zod": "~3.25.76",
22
- "@milaboratories/helpers": "1.14.1",
22
+ "@milaboratories/helpers": "1.14.2",
23
23
  "@milaboratories/pl-error-like": "1.12.10"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@vitest/coverage-istanbul": "^4.1.3",
27
27
  "typescript": "~5.9.3",
28
28
  "vitest": "^4.1.3",
29
- "@milaboratories/build-configs": "2.0.0",
30
29
  "@milaboratories/ts-configs": "1.2.3",
30
+ "@milaboratories/build-configs": "2.0.0",
31
31
  "@milaboratories/ts-builder": "1.4.0"
32
32
  },
33
33
  "scripts": {
@@ -4,10 +4,10 @@ import { AxisQualification } from "./selectors";
4
4
  import { canonicalizeJson } from "../../../json";
5
5
 
6
6
  export type DiscoveredPColumn = {
7
- path: PathItem[];
8
7
  column: PObjectId;
9
- columnQualifications: AxisQualification[];
10
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
8
+ path?: PathItem[];
9
+ columnQualifications?: AxisQualification[];
10
+ queriesQualifications?: Record<PObjectId, AxisQualification[]>;
11
11
  };
12
12
 
13
13
  export type DiscoveredPColumnId = Branded<PObjectId, "DiscoveredPColumnId">; // CanonicalizedJson<DiscoveredPColumn>;
@@ -28,22 +28,28 @@ export function isDiscoveredPColumn(obj: unknown): obj is DiscoveredPColumn {
28
28
  );
29
29
  }
30
30
 
31
- export function createDiscoveredPColumn(props: {
32
- column: PObjectId;
33
- path: PathItem[];
34
- columnQualifications: AxisQualification[];
35
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
36
- }): DiscoveredPColumn {
37
- return JSON.parse(JSON.stringify(props));
31
+ export function distillDiscoveredPColumn(props: DiscoveredPColumn): DiscoveredPColumn {
32
+ return {
33
+ column: props.column,
34
+ path: Array.isArray(props.path) && props.path.length > 0 ? props.path : undefined,
35
+ columnQualifications:
36
+ Array.isArray(props.columnQualifications) && props.columnQualifications.length > 0
37
+ ? props.columnQualifications
38
+ : undefined,
39
+ queriesQualifications:
40
+ props.queriesQualifications && Object.keys(props.queriesQualifications).length > 0
41
+ ? props.queriesQualifications
42
+ : undefined,
43
+ };
38
44
  }
39
45
 
40
46
  export function createDiscoveredPColumnId(props: {
41
47
  column: PObjectId;
42
- path: PathItem[];
43
- columnQualifications: AxisQualification[];
44
- queriesQualifications: Record<PObjectId, AxisQualification[]>;
48
+ path?: PathItem[];
49
+ columnQualifications?: AxisQualification[];
50
+ queriesQualifications?: Record<PObjectId, AxisQualification[]>;
45
51
  }): DiscoveredPColumnId {
46
- return stringifyDiscoveredPColumnId(createDiscoveredPColumn(props));
52
+ return stringifyDiscoveredPColumnId(props);
47
53
  }
48
54
 
49
55
  export function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPColumn {
@@ -60,5 +66,7 @@ export function parseDiscoveredPColumnId(id: DiscoveredPColumnId): DiscoveredPCo
60
66
  }
61
67
 
62
68
  export function stringifyDiscoveredPColumnId(id: DiscoveredPColumn) {
63
- return canonicalizeJson<DiscoveredPColumn>(id) as string as DiscoveredPColumnId;
69
+ return canonicalizeJson<DiscoveredPColumn>(
70
+ distillDiscoveredPColumn(id),
71
+ ) as string as DiscoveredPColumnId;
64
72
  }