@milaboratories/pl-model-common 1.39.0 → 1.41.0

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 +1 @@
1
- {"version":3,"file":"ls.cjs","names":[],"sources":["../../src/drivers/ls.ts"],"sourcesContent":["import { assertNever } from \"../util\";\nimport type { Branded } from \"../branding\";\nimport type { TableRange } from \"./pframe\";\nimport type { FileLike } from \"./interfaces\";\n\nconst uploadPrefix = \"upload://upload/\";\nconst indexPrefix = \"index://index/\";\n\nexport type ImportFileHandleUpload = `upload://upload/${string}`;\nexport type ImportFileHandleIndex = `index://index/${string}`;\n\nexport type ImportFileHandle = ImportFileHandleUpload | ImportFileHandleIndex;\n\nexport type LocalImportFileHandle = Branded<ImportFileHandle, \"Local\">;\n\nexport function isImportFileHandleUpload(\n handle: ImportFileHandle,\n): handle is ImportFileHandleUpload {\n return handle.startsWith(uploadPrefix);\n}\n\nexport function isImportFileHandleIndex(handle: ImportFileHandle): handle is ImportFileHandleIndex {\n return handle.startsWith(indexPrefix);\n}\n\n/** Results in upload */\nexport type StorageHandleLocal = `local://${string}`;\n\n/** Results in index */\nexport type StorageHandleRemote = `remote://${string}`;\n\nexport type StorageHandle = StorageHandleLocal | StorageHandleRemote;\n\nexport type StorageEntry = {\n name: string;\n handle: StorageHandle;\n initialFullPath: string;\n\n // TODO\n // pathStartsWithDisk\n};\n\nexport type ListFilesResult = {\n parent?: string;\n entries: LsEntry[];\n};\n\nexport type LsEntry =\n | {\n type: \"dir\";\n name: string;\n fullPath: string;\n }\n | {\n type: \"file\";\n name: string;\n fullPath: string;\n\n /** This handle should be set to args... */\n handle: ImportFileHandle;\n };\n\nexport type OpenDialogFilter = {\n /** Human-readable file type name */\n readonly name: string;\n /** File extensions */\n readonly extensions: string[];\n};\n\nexport type OpenDialogOps = {\n /** Open dialog window title */\n readonly title?: string;\n /** Custom label for the confirmation button, when left empty the default label will be used. */\n readonly buttonLabel?: string;\n /** Limits of file types user can select */\n readonly filters?: OpenDialogFilter[];\n};\n\nexport type OpenSingleFileResponse = {\n /** Contains local file handle, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly file?: LocalImportFileHandle;\n};\n\nexport type OpenMultipleFilesResponse = {\n /** Contains local file handles, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly files?: LocalImportFileHandle[];\n};\n\n/** Can be used to limit request for local file content to a certain bytes range */\nexport type FileRange = {\n /** From byte index (inclusive) */\n readonly from: number;\n /** To byte index (exclusive) */\n readonly to: number;\n};\n\nexport interface LsDriver {\n /** remote and local storages */\n getStorageList(): Promise<StorageEntry[]>;\n\n listFiles(storage: StorageHandle, fullPath: string): Promise<ListFilesResult>;\n\n /** Opens system file open dialog allowing to select single file and awaits user action */\n showOpenSingleFileDialog(ops: OpenDialogOps): Promise<OpenSingleFileResponse>;\n\n /** Opens system file open dialog allowing to multiple files and awaits user action */\n showOpenMultipleFilesDialog(ops: OpenDialogOps): Promise<OpenMultipleFilesResponse>;\n\n /** Given a handle to a local file, allows to get file size */\n getLocalFileSize(file: LocalImportFileHandle): Promise<number>;\n\n /** Given a handle to a local file, allows to get its content */\n getLocalFileContent(file: LocalImportFileHandle, range?: TableRange): Promise<Uint8Array>;\n\n /**\n * Resolves browser's File object into platforma's import file handle.\n *\n * This method is useful among other things for implementation of UI\n * components, that handle file Drag&Drop.\n * */\n fileToImportHandle(file: FileLike): Promise<ImportFileHandle>;\n\n /** Saves currently opened block webview as a PDF. */\n exportToPdf?(): Promise<void>;\n}\n\n/** Gets a file path from an import handle. */\nexport function getFilePathFromHandle(handle: ImportFileHandle): string {\n if (isImportFileHandleIndex(handle)) {\n const trimmed = handle.slice(indexPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { path: string };\n return data.path;\n } else if (isImportFileHandleUpload(handle)) {\n const trimmed = handle.slice(uploadPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { localPath: string };\n return data.localPath;\n }\n\n assertNever(handle);\n}\n\nfunction extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, \"\");\n}\n\n/** Gets a file name from an import handle. */\nexport function getFileNameFromHandle(handle: ImportFileHandle): string {\n return extractFileName(getFilePathFromHandle(handle));\n}\n"],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,cAAc;AASpB,SAAgB,yBACd,QACkC;AAClC,QAAO,OAAO,WAAW,aAAa;;AAGxC,SAAgB,wBAAwB,QAA2D;AACjG,QAAO,OAAO,WAAW,YAAY;;;AA2GvC,SAAgB,sBAAsB,QAAkC;AACtE,KAAI,wBAAwB,OAAO,EAAE;EACnC,MAAM,UAAU,OAAO,MAAM,GAAmB;AAEhD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;YACH,yBAAyB,OAAO,EAAE;EAC3C,MAAM,UAAU,OAAO,MAAM,GAAoB;AAEjD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;;AAGd,cAAA,YAAY,OAAO;;AAGrB,SAAS,gBAAgB,UAAkB;AACzC,QAAO,SAAS,QAAQ,YAAY,GAAG;;;AAIzC,SAAgB,sBAAsB,QAAkC;AACtE,QAAO,gBAAgB,sBAAsB,OAAO,CAAC"}
1
+ {"version":3,"file":"ls.cjs","names":[],"sources":["../../src/drivers/ls.ts"],"sourcesContent":["import { assertNever } from \"../util\";\nimport type { Branded } from \"../branding\";\nimport type { TableRange } from \"./pframe\";\nimport type { FileLike } from \"./interfaces\";\n\nconst uploadPrefix = \"upload://upload/\";\nconst indexPrefix = \"index://index/\";\n\nexport type ImportFileHandleUpload = `upload://upload/${string}`;\nexport type ImportFileHandleIndex = `index://index/${string}`;\n\nexport type ImportFileHandle = ImportFileHandleUpload | ImportFileHandleIndex;\n\nexport type LocalImportFileHandle = Branded<ImportFileHandle, \"Local\">;\n\nexport function isImportFileHandleUpload(\n handle: ImportFileHandle,\n): handle is ImportFileHandleUpload {\n return handle.startsWith(uploadPrefix);\n}\n\nexport function isImportFileHandleIndex(handle: ImportFileHandle): handle is ImportFileHandleIndex {\n return handle.startsWith(indexPrefix);\n}\n\n/** Results in upload */\nexport type StorageHandleLocal = `local://${string}`;\n\n/** Results in index */\nexport type StorageHandleRemote = `remote://${string}`;\n\nexport type StorageHandle = StorageHandleLocal | StorageHandleRemote;\n\nexport type StorageEntry = {\n /** Stable machine identifier (e.g. \"library\", \"root\", \"local\"). Used for filtering. */\n id: string;\n /** Human-readable display name. */\n name: string;\n handle: StorageHandle;\n initialFullPath: string;\n};\n\nexport type ListFilesResult = {\n parent?: string;\n entries: LsEntry[];\n};\n\nexport type LsEntry =\n | {\n type: \"dir\";\n name: string;\n fullPath: string;\n }\n | {\n type: \"file\";\n name: string;\n fullPath: string;\n\n /** This handle should be set to args... */\n handle: ImportFileHandle;\n };\n\nexport type OpenDialogFilter = {\n /** Human-readable file type name */\n readonly name: string;\n /** File extensions */\n readonly extensions: string[];\n};\n\nexport type OpenDialogOps = {\n /** Open dialog window title */\n readonly title?: string;\n /** Custom label for the confirmation button, when left empty the default label will be used. */\n readonly buttonLabel?: string;\n /** Limits of file types user can select */\n readonly filters?: OpenDialogFilter[];\n};\n\nexport type OpenSingleFileResponse = {\n /** Contains local file handle, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly file?: LocalImportFileHandle;\n};\n\nexport type OpenMultipleFilesResponse = {\n /** Contains local file handles, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly files?: LocalImportFileHandle[];\n};\n\n/** Can be used to limit request for local file content to a certain bytes range */\nexport type FileRange = {\n /** From byte index (inclusive) */\n readonly from: number;\n /** To byte index (exclusive) */\n readonly to: number;\n};\n\nexport interface LsDriver {\n /** remote and local storages */\n getStorageList(): Promise<StorageEntry[]>;\n\n listFiles(storage: StorageHandle, fullPath: string): Promise<ListFilesResult>;\n\n /** Opens system file open dialog allowing to select single file and awaits user action */\n showOpenSingleFileDialog(ops: OpenDialogOps): Promise<OpenSingleFileResponse>;\n\n /** Opens system file open dialog allowing to multiple files and awaits user action */\n showOpenMultipleFilesDialog(ops: OpenDialogOps): Promise<OpenMultipleFilesResponse>;\n\n /** Given a handle to a local file, allows to get file size */\n getLocalFileSize(file: LocalImportFileHandle): Promise<number>;\n\n /** Given a handle to a local file, allows to get its content */\n getLocalFileContent(file: LocalImportFileHandle, range?: TableRange): Promise<Uint8Array>;\n\n /**\n * Resolves browser's File object into platforma's import file handle.\n *\n * This method is useful among other things for implementation of UI\n * components, that handle file Drag&Drop.\n * */\n fileToImportHandle(file: FileLike): Promise<ImportFileHandle>;\n\n /** Saves currently opened block webview as a PDF. */\n exportToPdf?(): Promise<void>;\n}\n\n/** Gets a file path from an import handle. */\nexport function getFilePathFromHandle(handle: ImportFileHandle): string {\n if (isImportFileHandleIndex(handle)) {\n const trimmed = handle.slice(indexPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { path: string };\n return data.path;\n } else if (isImportFileHandleUpload(handle)) {\n const trimmed = handle.slice(uploadPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { localPath: string };\n return data.localPath;\n }\n\n assertNever(handle);\n}\n\nfunction extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, \"\");\n}\n\n/** Gets a file name from an import handle. */\nexport function getFileNameFromHandle(handle: ImportFileHandle): string {\n return extractFileName(getFilePathFromHandle(handle));\n}\n"],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,cAAc;AASpB,SAAgB,yBACd,QACkC;AAClC,QAAO,OAAO,WAAW,aAAa;;AAGxC,SAAgB,wBAAwB,QAA2D;AACjG,QAAO,OAAO,WAAW,YAAY;;;AA2GvC,SAAgB,sBAAsB,QAAkC;AACtE,KAAI,wBAAwB,OAAO,EAAE;EACnC,MAAM,UAAU,OAAO,MAAM,GAAmB;AAEhD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;YACH,yBAAyB,OAAO,EAAE;EAC3C,MAAM,UAAU,OAAO,MAAM,GAAoB;AAEjD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;;AAGd,cAAA,YAAY,OAAO;;AAGrB,SAAS,gBAAgB,UAAkB;AACzC,QAAO,SAAS,QAAQ,YAAY,GAAG;;;AAIzC,SAAgB,sBAAsB,QAAkC;AACtE,QAAO,gBAAgB,sBAAsB,OAAO,CAAC"}
@@ -14,6 +14,7 @@ type StorageHandleLocal = `local://${string}`;
14
14
  type StorageHandleRemote = `remote://${string}`;
15
15
  type StorageHandle = StorageHandleLocal | StorageHandleRemote;
16
16
  type StorageEntry = {
17
+ /** Stable machine identifier (e.g. "library", "root", "local"). Used for filtering. */id: string; /** Human-readable display name. */
17
18
  name: string;
18
19
  handle: StorageHandle;
19
20
  initialFullPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ls.d.ts","names":[],"sources":["../../src/drivers/ls.ts"],"mappings":";;;;KAQY,sBAAA;AAAA,KACA,qBAAA;AAAA,KAEA,gBAAA,GAAmB,sBAAA,GAAyB,qBAAA;AAAA,KAE5C,qBAAA,GAAwB,OAAA,CAAQ,gBAAA;AAAA,iBAE5B,wBAAA,CACd,MAAA,EAAQ,gBAAA,GACP,MAAA,IAAU,sBAAA;AAAA,iBAIG,uBAAA,CAAwB,MAAA,EAAQ,gBAAA,GAAmB,MAAA,IAAU,qBAAA;;KAKjE,kBAAA;AAjBZ;AAAA,KAoBY,mBAAA;AAAA,KAEA,aAAA,GAAgB,kBAAA,GAAqB,mBAAA;AAAA,KAErC,YAAA;EACV,IAAA;EACA,MAAA,EAAQ,aAAA;EACR,eAAA;AAAA;AAAA,KAMU,eAAA;EACV,MAAA;EACA,OAAA,EAAS,OAAA;AAAA;AAAA,KAGC,OAAA;EAEN,IAAA;EACA,IAAA;EACA,QAAA;AAAA;EAGA,IAAA;EACA,IAAA;EACA,QAAA,UAxCJ;EA2CI,MAAA,EAAQ,gBAAA;AAAA;AAAA,KAGF,gBAAA;EA7CuB,6CA+CxB,IAAA,UA3C4B;EAAA,SA6C5B,UAAA;AAAA;AAAA,KAGC,aAAA;EAhD4B,wCAkD7B,KAAA,WAlDkE;EAAA,SAoDlE,WAAA,WApDuF;EAAA,SAsDvF,OAAA,GAAU,gBAAA;AAAA;AAAA,KAGT,sBAAA;EApDkB;;EAAA,SAuDnB,IAAA,GAAO,qBAAA;AAAA;AAAA,KAGN,yBAAA;EAvDmB;;EAAA,SA0DpB,KAAA,GAAQ,qBAAA;AAAA;;KAIP,SAAA;EA5DwD,2CA8DzD,IAAA,UA5Da;EAAA,SA8Db,EAAA;AAAA;AAAA,UAGM,QAAA;EA/Df;EAiEA,cAAA,IAAkB,OAAA,CAAQ,YAAA;EAE1B,SAAA,CAAU,OAAA,EAAS,aAAA,EAAe,QAAA,WAAmB,OAAA,CAAQ,eAAA;EAlE9C;EAqEf,wBAAA,CAAyB,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,sBAAA;EA/D5C;EAkEV,2BAAA,CAA4B,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,yBAAA;;EAGzD,gBAAA,CAAiB,IAAA,EAAM,qBAAA,GAAwB,OAAA;EApE/C;EAuEA,mBAAA,CAAoB,IAAA,EAAM,qBAAA,EAAuB,KAAA,GAAQ,UAAA,GAAa,OAAA,CAAQ,UAAA;EAtErE;;;AAGX;;;EA2EE,kBAAA,CAAmB,IAAA,EAAM,QAAA,GAAW,OAAA,CAAQ,gBAAA;EAzExC;EA4EJ,WAAA,KAAgB,OAAA;AAAA;;iBAIF,qBAAA,CAAsB,MAAA,EAAQ,gBAAA;;iBAmB9B,qBAAA,CAAsB,MAAA,EAAQ,gBAAA"}
1
+ {"version":3,"file":"ls.d.ts","names":[],"sources":["../../src/drivers/ls.ts"],"mappings":";;;;KAQY,sBAAA;AAAA,KACA,qBAAA;AAAA,KAEA,gBAAA,GAAmB,sBAAA,GAAyB,qBAAA;AAAA,KAE5C,qBAAA,GAAwB,OAAA,CAAQ,gBAAA;AAAA,iBAE5B,wBAAA,CACd,MAAA,EAAQ,gBAAA,GACP,MAAA,IAAU,sBAAA;AAAA,iBAIG,uBAAA,CAAwB,MAAA,EAAQ,gBAAA,GAAmB,MAAA,IAAU,qBAAA;;KAKjE,kBAAA;AAjBZ;AAAA,KAoBY,mBAAA;AAAA,KAEA,aAAA,GAAgB,kBAAA,GAAqB,mBAAA;AAAA,KAErC,YAAA;EAxBqB,uFA0B/B,EAAA,UAxB0B;EA0B1B,IAAA;EACA,MAAA,EAAQ,aAAA;EACR,eAAA;AAAA;AAAA,KAGU,eAAA;EACV,MAAA;EACA,OAAA,EAAS,OAAA;AAAA;AAAA,KAGC,OAAA;EAEN,IAAA;EACA,IAAA;EACA,QAAA;AAAA;EAGA,IAAA;EACA,IAAA;EACA,QAAA,UAvC6B;EA0C7B,MAAA,EAAQ,gBAAA;AAAA;AAAA,KAGF,gBAAA;+CAED,IAAA,UA3CqC;EAAA,SA6CrC,UAAA;AAAA;AAAA,KAGC,aAAA;EAhDsF,wCAkDvF,KAAA,WA7CC;EAAA,SA+CD,WAAA;WAEA,OAAA,GAAU,gBAAA;AAAA;AAAA,KAGT,sBAAA;EAjDmB;;EAAA,SAoDpB,IAAA,GAAO,qBAAA;AAAA;AAAA,KAGN,yBAAA;EArDa;;EAAA,SAwDd,KAAA,GAAQ,qBAAA;AAAA;AAtDnB;AAAA,KA0DY,SAAA;6CAED,IAAA,UA1DT;EAAA,SA4DS,EAAA;AAAA;AAAA,UAGM,QAAA;EA3Df;EA6DA,cAAA,IAAkB,OAAA,CAAQ,YAAA;EAE1B,SAAA,CAAU,OAAA,EAAS,aAAA,EAAe,QAAA,WAAmB,OAAA,CAAQ,eAAA;EA5DnD;EA+DV,wBAAA,CAAyB,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,sBAAA;;EAGtD,2BAAA,CAA4B,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,yBAAA;EAjEzD;EAoEA,gBAAA,CAAiB,IAAA,EAAM,qBAAA,GAAwB,OAAA;EAnEtC;EAsET,mBAAA,CAAoB,IAAA,EAAM,qBAAA,EAAuB,KAAA,GAAQ,UAAA,GAAa,OAAA,CAAQ,UAAA;EAtE9D;AAGlB;;;;;EA2EE,kBAAA,CAAmB,IAAA,EAAM,QAAA,GAAW,OAAA,CAAQ,gBAAA;EAvExC;EA0EJ,WAAA,KAAgB,OAAA;AAAA;;iBAIF,qBAAA,CAAsB,MAAA,EAAQ,gBAAA;;iBAmB9B,qBAAA,CAAsB,MAAA,EAAQ,gBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ls.js","names":[],"sources":["../../src/drivers/ls.ts"],"sourcesContent":["import { assertNever } from \"../util\";\nimport type { Branded } from \"../branding\";\nimport type { TableRange } from \"./pframe\";\nimport type { FileLike } from \"./interfaces\";\n\nconst uploadPrefix = \"upload://upload/\";\nconst indexPrefix = \"index://index/\";\n\nexport type ImportFileHandleUpload = `upload://upload/${string}`;\nexport type ImportFileHandleIndex = `index://index/${string}`;\n\nexport type ImportFileHandle = ImportFileHandleUpload | ImportFileHandleIndex;\n\nexport type LocalImportFileHandle = Branded<ImportFileHandle, \"Local\">;\n\nexport function isImportFileHandleUpload(\n handle: ImportFileHandle,\n): handle is ImportFileHandleUpload {\n return handle.startsWith(uploadPrefix);\n}\n\nexport function isImportFileHandleIndex(handle: ImportFileHandle): handle is ImportFileHandleIndex {\n return handle.startsWith(indexPrefix);\n}\n\n/** Results in upload */\nexport type StorageHandleLocal = `local://${string}`;\n\n/** Results in index */\nexport type StorageHandleRemote = `remote://${string}`;\n\nexport type StorageHandle = StorageHandleLocal | StorageHandleRemote;\n\nexport type StorageEntry = {\n name: string;\n handle: StorageHandle;\n initialFullPath: string;\n\n // TODO\n // pathStartsWithDisk\n};\n\nexport type ListFilesResult = {\n parent?: string;\n entries: LsEntry[];\n};\n\nexport type LsEntry =\n | {\n type: \"dir\";\n name: string;\n fullPath: string;\n }\n | {\n type: \"file\";\n name: string;\n fullPath: string;\n\n /** This handle should be set to args... */\n handle: ImportFileHandle;\n };\n\nexport type OpenDialogFilter = {\n /** Human-readable file type name */\n readonly name: string;\n /** File extensions */\n readonly extensions: string[];\n};\n\nexport type OpenDialogOps = {\n /** Open dialog window title */\n readonly title?: string;\n /** Custom label for the confirmation button, when left empty the default label will be used. */\n readonly buttonLabel?: string;\n /** Limits of file types user can select */\n readonly filters?: OpenDialogFilter[];\n};\n\nexport type OpenSingleFileResponse = {\n /** Contains local file handle, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly file?: LocalImportFileHandle;\n};\n\nexport type OpenMultipleFilesResponse = {\n /** Contains local file handles, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly files?: LocalImportFileHandle[];\n};\n\n/** Can be used to limit request for local file content to a certain bytes range */\nexport type FileRange = {\n /** From byte index (inclusive) */\n readonly from: number;\n /** To byte index (exclusive) */\n readonly to: number;\n};\n\nexport interface LsDriver {\n /** remote and local storages */\n getStorageList(): Promise<StorageEntry[]>;\n\n listFiles(storage: StorageHandle, fullPath: string): Promise<ListFilesResult>;\n\n /** Opens system file open dialog allowing to select single file and awaits user action */\n showOpenSingleFileDialog(ops: OpenDialogOps): Promise<OpenSingleFileResponse>;\n\n /** Opens system file open dialog allowing to multiple files and awaits user action */\n showOpenMultipleFilesDialog(ops: OpenDialogOps): Promise<OpenMultipleFilesResponse>;\n\n /** Given a handle to a local file, allows to get file size */\n getLocalFileSize(file: LocalImportFileHandle): Promise<number>;\n\n /** Given a handle to a local file, allows to get its content */\n getLocalFileContent(file: LocalImportFileHandle, range?: TableRange): Promise<Uint8Array>;\n\n /**\n * Resolves browser's File object into platforma's import file handle.\n *\n * This method is useful among other things for implementation of UI\n * components, that handle file Drag&Drop.\n * */\n fileToImportHandle(file: FileLike): Promise<ImportFileHandle>;\n\n /** Saves currently opened block webview as a PDF. */\n exportToPdf?(): Promise<void>;\n}\n\n/** Gets a file path from an import handle. */\nexport function getFilePathFromHandle(handle: ImportFileHandle): string {\n if (isImportFileHandleIndex(handle)) {\n const trimmed = handle.slice(indexPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { path: string };\n return data.path;\n } else if (isImportFileHandleUpload(handle)) {\n const trimmed = handle.slice(uploadPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { localPath: string };\n return data.localPath;\n }\n\n assertNever(handle);\n}\n\nfunction extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, \"\");\n}\n\n/** Gets a file name from an import handle. */\nexport function getFileNameFromHandle(handle: ImportFileHandle): string {\n return extractFileName(getFilePathFromHandle(handle));\n}\n"],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,cAAc;AASpB,SAAgB,yBACd,QACkC;AAClC,QAAO,OAAO,WAAW,aAAa;;AAGxC,SAAgB,wBAAwB,QAA2D;AACjG,QAAO,OAAO,WAAW,YAAY;;;AA2GvC,SAAgB,sBAAsB,QAAkC;AACtE,KAAI,wBAAwB,OAAO,EAAE;EACnC,MAAM,UAAU,OAAO,MAAM,GAAmB;AAEhD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;YACH,yBAAyB,OAAO,EAAE;EAC3C,MAAM,UAAU,OAAO,MAAM,GAAoB;AAEjD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;;AAGd,aAAY,OAAO;;AAGrB,SAAS,gBAAgB,UAAkB;AACzC,QAAO,SAAS,QAAQ,YAAY,GAAG;;;AAIzC,SAAgB,sBAAsB,QAAkC;AACtE,QAAO,gBAAgB,sBAAsB,OAAO,CAAC"}
1
+ {"version":3,"file":"ls.js","names":[],"sources":["../../src/drivers/ls.ts"],"sourcesContent":["import { assertNever } from \"../util\";\nimport type { Branded } from \"../branding\";\nimport type { TableRange } from \"./pframe\";\nimport type { FileLike } from \"./interfaces\";\n\nconst uploadPrefix = \"upload://upload/\";\nconst indexPrefix = \"index://index/\";\n\nexport type ImportFileHandleUpload = `upload://upload/${string}`;\nexport type ImportFileHandleIndex = `index://index/${string}`;\n\nexport type ImportFileHandle = ImportFileHandleUpload | ImportFileHandleIndex;\n\nexport type LocalImportFileHandle = Branded<ImportFileHandle, \"Local\">;\n\nexport function isImportFileHandleUpload(\n handle: ImportFileHandle,\n): handle is ImportFileHandleUpload {\n return handle.startsWith(uploadPrefix);\n}\n\nexport function isImportFileHandleIndex(handle: ImportFileHandle): handle is ImportFileHandleIndex {\n return handle.startsWith(indexPrefix);\n}\n\n/** Results in upload */\nexport type StorageHandleLocal = `local://${string}`;\n\n/** Results in index */\nexport type StorageHandleRemote = `remote://${string}`;\n\nexport type StorageHandle = StorageHandleLocal | StorageHandleRemote;\n\nexport type StorageEntry = {\n /** Stable machine identifier (e.g. \"library\", \"root\", \"local\"). Used for filtering. */\n id: string;\n /** Human-readable display name. */\n name: string;\n handle: StorageHandle;\n initialFullPath: string;\n};\n\nexport type ListFilesResult = {\n parent?: string;\n entries: LsEntry[];\n};\n\nexport type LsEntry =\n | {\n type: \"dir\";\n name: string;\n fullPath: string;\n }\n | {\n type: \"file\";\n name: string;\n fullPath: string;\n\n /** This handle should be set to args... */\n handle: ImportFileHandle;\n };\n\nexport type OpenDialogFilter = {\n /** Human-readable file type name */\n readonly name: string;\n /** File extensions */\n readonly extensions: string[];\n};\n\nexport type OpenDialogOps = {\n /** Open dialog window title */\n readonly title?: string;\n /** Custom label for the confirmation button, when left empty the default label will be used. */\n readonly buttonLabel?: string;\n /** Limits of file types user can select */\n readonly filters?: OpenDialogFilter[];\n};\n\nexport type OpenSingleFileResponse = {\n /** Contains local file handle, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly file?: LocalImportFileHandle;\n};\n\nexport type OpenMultipleFilesResponse = {\n /** Contains local file handles, allowing file importing or content reading. If user canceled\n * the dialog, field will be undefined. */\n readonly files?: LocalImportFileHandle[];\n};\n\n/** Can be used to limit request for local file content to a certain bytes range */\nexport type FileRange = {\n /** From byte index (inclusive) */\n readonly from: number;\n /** To byte index (exclusive) */\n readonly to: number;\n};\n\nexport interface LsDriver {\n /** remote and local storages */\n getStorageList(): Promise<StorageEntry[]>;\n\n listFiles(storage: StorageHandle, fullPath: string): Promise<ListFilesResult>;\n\n /** Opens system file open dialog allowing to select single file and awaits user action */\n showOpenSingleFileDialog(ops: OpenDialogOps): Promise<OpenSingleFileResponse>;\n\n /** Opens system file open dialog allowing to multiple files and awaits user action */\n showOpenMultipleFilesDialog(ops: OpenDialogOps): Promise<OpenMultipleFilesResponse>;\n\n /** Given a handle to a local file, allows to get file size */\n getLocalFileSize(file: LocalImportFileHandle): Promise<number>;\n\n /** Given a handle to a local file, allows to get its content */\n getLocalFileContent(file: LocalImportFileHandle, range?: TableRange): Promise<Uint8Array>;\n\n /**\n * Resolves browser's File object into platforma's import file handle.\n *\n * This method is useful among other things for implementation of UI\n * components, that handle file Drag&Drop.\n * */\n fileToImportHandle(file: FileLike): Promise<ImportFileHandle>;\n\n /** Saves currently opened block webview as a PDF. */\n exportToPdf?(): Promise<void>;\n}\n\n/** Gets a file path from an import handle. */\nexport function getFilePathFromHandle(handle: ImportFileHandle): string {\n if (isImportFileHandleIndex(handle)) {\n const trimmed = handle.slice(indexPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { path: string };\n return data.path;\n } else if (isImportFileHandleUpload(handle)) {\n const trimmed = handle.slice(uploadPrefix.length);\n const data = JSON.parse(decodeURIComponent(trimmed)) as { localPath: string };\n return data.localPath;\n }\n\n assertNever(handle);\n}\n\nfunction extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, \"\");\n}\n\n/** Gets a file name from an import handle. */\nexport function getFileNameFromHandle(handle: ImportFileHandle): string {\n return extractFileName(getFilePathFromHandle(handle));\n}\n"],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,cAAc;AASpB,SAAgB,yBACd,QACkC;AAClC,QAAO,OAAO,WAAW,aAAa;;AAGxC,SAAgB,wBAAwB,QAA2D;AACjG,QAAO,OAAO,WAAW,YAAY;;;AA2GvC,SAAgB,sBAAsB,QAAkC;AACtE,KAAI,wBAAwB,OAAO,EAAE;EACnC,MAAM,UAAU,OAAO,MAAM,GAAmB;AAEhD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;YACH,yBAAyB,OAAO,EAAE;EAC3C,MAAM,UAAU,OAAO,MAAM,GAAoB;AAEjD,SADa,KAAK,MAAM,mBAAmB,QAAQ,CAAC,CACxC;;AAGd,aAAY,OAAO;;AAGrB,SAAS,gBAAgB,UAAkB;AACzC,QAAO,SAAS,QAAQ,YAAY,GAAG;;;AAIzC,SAAgB,sBAAsB,QAAkC;AACtE,QAAO,gBAAgB,sBAAsB,OAAO,CAAC"}
@@ -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";
@@ -63,4 +63,5 @@ import { Base64Compatible, Base64Encoded, base64Decode, base64Encode } from "./b
63
63
  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
- 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, 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 };
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, 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 };
@@ -0,0 +1,15 @@
1
+ import { Branded } from "./branding.js";
2
+
3
+ //#region src/project_id.d.ts
4
+ /**
5
+ * Opaque identifier for a project, safe to persist and reuse across sessions.
6
+ * Internally this is a string derived from resource ID without signature.
7
+ * Unlike SignedResourceId, this does not carry cryptographic signatures and can be
8
+ * safely persisted, serialized, and reused across ML sessions.
9
+ * Absence of signature guarantees this ID cannot be used in transactions 'as-is',
10
+ * requiring the caller to operate with special types and helpers.
11
+ */
12
+ type ProjectId = Branded<string, "ProjectId">;
13
+ //#endregion
14
+ export { ProjectId };
15
+ //# sourceMappingURL=project_id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project_id.d.ts","names":[],"sources":["../src/project_id.ts"],"mappings":";;;;;AAUA;;;;;;KAAY,SAAA,GAAY,OAAA"}
@@ -33,6 +33,7 @@ const ResourceTypeName = {
33
33
  Null: "Null",
34
34
  Binary: "binary",
35
35
  LSProvider: "LSProvider",
36
+ WorkingDirectory: "WorkingDirectory",
36
37
  UserProject: "UserProject",
37
38
  Projects: "Projects",
38
39
  ClientRoot: "ClientRoot"
@@ -40,6 +41,9 @@ const ResourceTypeName = {
40
41
  /** Resource type name prefix constants. */
41
42
  const ResourceTypePrefix = {
42
43
  Blob: "Blob/",
44
+ LS: "LS/",
45
+ WorkingDirectory: "WorkingDirectory/",
46
+ StorageSpaceAllocation: "StorageSpaceAllocation/",
43
47
  BlobUpload: "BlobUpload/",
44
48
  BlobIndex: "BlobIndex/",
45
49
  PColumnData: "PColumnData/",
@@ -1 +1 @@
1
- {"version":3,"file":"resource_types.cjs","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,eAAe;CACf,QAAQ;CACR,aAAa;CACb,WAAW;CACX,QAAQ;CACR,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,SAAS;CACT,gBAAgB;CAChB,wBAAwB;CACxB,cAAc;CACd,eAAe;CACf,UAAU;CACV,cAAc;CACd,OAAO;CACP,mBAAmB;CACnB,YAAY;CACZ,cAAc;CACd,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,aAAa;CACb,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,UAAU;CACV,YAAY;CACb;;AAGD,MAAa,qBAAqB;CAChC,MAAM;CACN,YAAY;CACZ,WAAW;CACX,aAAa;CACb,eAAe;CAChB"}
1
+ {"version":3,"file":"resource_types.cjs","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n WorkingDirectory: \"WorkingDirectory\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n LS: \"LS/\",\n WorkingDirectory: \"WorkingDirectory/\",\n StorageSpaceAllocation: \"StorageSpaceAllocation/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,eAAe;CACf,QAAQ;CACR,aAAa;CACb,WAAW;CACX,QAAQ;CACR,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,SAAS;CACT,gBAAgB;CAChB,wBAAwB;CACxB,cAAc;CACd,eAAe;CACf,UAAU;CACV,cAAc;CACd,OAAO;CACP,mBAAmB;CACnB,YAAY;CACZ,cAAc;CACd,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,aAAa;CACb,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,kBAAkB;CAClB,aAAa;CACb,UAAU;CACV,YAAY;CACb;;AAGD,MAAa,qBAAqB;CAChC,MAAM;CACN,IAAI;CACJ,kBAAkB;CAClB,wBAAwB;CACxB,YAAY;CACZ,WAAW;CACX,aAAa;CACb,eAAe;CAChB"}
@@ -33,6 +33,7 @@ declare const ResourceTypeName: {
33
33
  readonly Null: "Null";
34
34
  readonly Binary: "binary";
35
35
  readonly LSProvider: "LSProvider";
36
+ readonly WorkingDirectory: "WorkingDirectory";
36
37
  readonly UserProject: "UserProject";
37
38
  readonly Projects: "Projects";
38
39
  readonly ClientRoot: "ClientRoot";
@@ -40,6 +41,9 @@ declare const ResourceTypeName: {
40
41
  /** Resource type name prefix constants. */
41
42
  declare const ResourceTypePrefix: {
42
43
  readonly Blob: "Blob/";
44
+ readonly LS: "LS/";
45
+ readonly WorkingDirectory: "WorkingDirectory/";
46
+ readonly StorageSpaceAllocation: "StorageSpaceAllocation/";
43
47
  readonly BlobUpload: "BlobUpload/";
44
48
  readonly BlobIndex: "BlobIndex/";
45
49
  readonly PColumnData: "PColumnData/";
@@ -1 +1 @@
1
- {"version":3,"file":"resource_types.d.ts","names":[],"sources":["../src/resource_types.ts"],"mappings":";;cACa,gBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuCA,kBAAA;EAAA"}
1
+ {"version":3,"file":"resource_types.d.ts","names":[],"sources":["../src/resource_types.ts"],"mappings":";;cACa,gBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCA,kBAAA;EAAA"}
@@ -33,6 +33,7 @@ const ResourceTypeName = {
33
33
  Null: "Null",
34
34
  Binary: "binary",
35
35
  LSProvider: "LSProvider",
36
+ WorkingDirectory: "WorkingDirectory",
36
37
  UserProject: "UserProject",
37
38
  Projects: "Projects",
38
39
  ClientRoot: "ClientRoot"
@@ -40,6 +41,9 @@ const ResourceTypeName = {
40
41
  /** Resource type name prefix constants. */
41
42
  const ResourceTypePrefix = {
42
43
  Blob: "Blob/",
44
+ LS: "LS/",
45
+ WorkingDirectory: "WorkingDirectory/",
46
+ StorageSpaceAllocation: "StorageSpaceAllocation/",
43
47
  BlobUpload: "BlobUpload/",
44
48
  BlobIndex: "BlobIndex/",
45
49
  PColumnData: "PColumnData/",
@@ -1 +1 @@
1
- {"version":3,"file":"resource_types.js","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,eAAe;CACf,QAAQ;CACR,aAAa;CACb,WAAW;CACX,QAAQ;CACR,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,SAAS;CACT,gBAAgB;CAChB,wBAAwB;CACxB,cAAc;CACd,eAAe;CACf,UAAU;CACV,cAAc;CACd,OAAO;CACP,mBAAmB;CACnB,YAAY;CACZ,cAAc;CACd,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,aAAa;CACb,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,UAAU;CACV,YAAY;CACb;;AAGD,MAAa,qBAAqB;CAChC,MAAM;CACN,YAAY;CACZ,WAAW;CACX,aAAa;CACb,eAAe;CAChB"}
1
+ {"version":3,"file":"resource_types.js","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n WorkingDirectory: \"WorkingDirectory\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n LS: \"LS/\",\n WorkingDirectory: \"WorkingDirectory/\",\n StorageSpaceAllocation: \"StorageSpaceAllocation/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,eAAe;CACf,QAAQ;CACR,aAAa;CACb,WAAW;CACX,QAAQ;CACR,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,SAAS;CACT,gBAAgB;CAChB,wBAAwB;CACxB,cAAc;CACd,eAAe;CACf,UAAU;CACV,cAAc;CACd,OAAO;CACP,mBAAmB;CACnB,YAAY;CACZ,cAAc;CACd,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,aAAa;CACb,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,kBAAkB;CAClB,aAAa;CACb,UAAU;CACV,YAAY;CACb;;AAGD,MAAa,qBAAqB;CAChC,MAAM;CACN,IAAI;CACJ,kBAAkB;CAClB,wBAAwB;CACxB,YAAY;CACZ,WAAW;CACX,aAAa;CACb,eAAe;CAChB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-model-common",
3
- "version": "1.39.0",
3
+ "version": "1.41.0",
4
4
  "description": "Platforma SDK Model",
5
5
  "files": [
6
6
  "./dist/**/*",
@@ -26,9 +26,9 @@
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
- "@milaboratories/ts-builder": "1.3.2",
31
- "@milaboratories/ts-configs": "1.2.3"
29
+ "@milaboratories/ts-configs": "1.2.3",
30
+ "@milaboratories/ts-builder": "1.4.0",
31
+ "@milaboratories/build-configs": "2.0.0"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "ts-builder build --target node",
package/src/drivers/ls.ts CHANGED
@@ -32,12 +32,12 @@ export type StorageHandleRemote = `remote://${string}`;
32
32
  export type StorageHandle = StorageHandleLocal | StorageHandleRemote;
33
33
 
34
34
  export type StorageEntry = {
35
+ /** Stable machine identifier (e.g. "library", "root", "local"). Used for filtering. */
36
+ id: string;
37
+ /** Human-readable display name. */
35
38
  name: string;
36
39
  handle: StorageHandle;
37
40
  initialFullPath: string;
38
-
39
- // TODO
40
- // pathStartsWithDisk
41
41
  };
42
42
 
43
43
  export type ListFilesResult = {
@@ -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
  }
package/src/index.ts CHANGED
@@ -21,3 +21,4 @@ export * from "./httpAuth";
21
21
  export * from "./resource_types";
22
22
  export * from "./services";
23
23
  export * from "./pool_entry";
24
+ export * from "./project_id";
@@ -0,0 +1,11 @@
1
+ import type { Branded } from "./branding";
2
+
3
+ /**
4
+ * Opaque identifier for a project, safe to persist and reuse across sessions.
5
+ * Internally this is a string derived from resource ID without signature.
6
+ * Unlike SignedResourceId, this does not carry cryptographic signatures and can be
7
+ * safely persisted, serialized, and reused across ML sessions.
8
+ * Absence of signature guarantees this ID cannot be used in transactions 'as-is',
9
+ * requiring the caller to operate with special types and helpers.
10
+ */
11
+ export type ProjectId = Branded<string, "ProjectId">;
@@ -32,6 +32,7 @@ export const ResourceTypeName = {
32
32
  Null: "Null",
33
33
  Binary: "binary",
34
34
  LSProvider: "LSProvider",
35
+ WorkingDirectory: "WorkingDirectory",
35
36
  UserProject: "UserProject",
36
37
  Projects: "Projects",
37
38
  ClientRoot: "ClientRoot",
@@ -40,6 +41,9 @@ export const ResourceTypeName = {
40
41
  /** Resource type name prefix constants. */
41
42
  export const ResourceTypePrefix = {
42
43
  Blob: "Blob/",
44
+ LS: "LS/",
45
+ WorkingDirectory: "WorkingDirectory/",
46
+ StorageSpaceAllocation: "StorageSpaceAllocation/",
43
47
  BlobUpload: "BlobUpload/",
44
48
  BlobIndex: "BlobIndex/",
45
49
  PColumnData: "PColumnData/",