@milaboratories/pf-spec-driver 1.3.21 → 1.4.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.
@@ -131,6 +131,15 @@ var SpecDriver = class {
131
131
  throw error;
132
132
  }
133
133
  }
134
+ rewriteLegacyFilters(request) {
135
+ try {
136
+ return (0, _milaboratories_pframes_rs_wasm.rewriteLegacyFilters)(request);
137
+ } catch (err) {
138
+ const error = new _milaboratories_pl_model_common.PFrameSpecDriverError(`rewriteLegacyFilters failed`);
139
+ error.cause = /* @__PURE__ */ new Error(`request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
140
+ throw error;
141
+ }
142
+ }
134
143
  async dispose() {
135
144
  await this.frames.dispose();
136
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spec_driver.cjs","names":["ConsoleLoggerAdapter","PFramePool","ValueType","logPFrames","PFrameSpecDriverError"],"sources":["../src/spec_driver.ts"],"sourcesContent":["import {\n buildQuery,\n expandAxes,\n collapseAxes,\n findAxis,\n findTableColumn,\n} from \"@milaboratories/pframes-rs-wasm\";\nimport type {\n AxesId,\n AxesSpec,\n BuildQueryInput,\n PColumnInfo,\n PColumnSpec,\n PFrameSpecDriver,\n PTableColumnId,\n PTableColumnSpec,\n SingleAxisSelector,\n SpecFrameHandle,\n SpecQueryJoinEntry,\n PoolEntry,\n DiscoverColumnsRequest,\n DiscoverColumnsResponse,\n DeleteColumnRequest,\n DeleteColumnResponse,\n EvaluateQueryResponse,\n SpecQuery,\n} from \"@milaboratories/pl-model-common\";\nimport {\n PFrameSpecDriverError,\n ValueType,\n ensureError,\n resolveAnnotationParents,\n} from \"@milaboratories/pl-model-common\";\nimport { type MiLogger, ConsoleLoggerAdapter } from \"@milaboratories/helpers\";\nimport { PFramePool } from \"./pframe_pool\";\nimport { logPFrames } from \"./logging\";\n\n/**\n * Manages spec-only PFrame instances (WASM) with handle-based lifecycle.\n *\n * All operations are synchronous — WASM computes results immediately.\n */\nexport class SpecDriver implements PFrameSpecDriver, AsyncDisposable {\n private readonly logger: MiLogger;\n private readonly frames: PFramePool;\n\n public constructor(options?: { logger?: MiLogger }) {\n this.logger = options?.logger ?? new ConsoleLoggerAdapter();\n this.frames = new PFramePool(this.logger);\n }\n\n createSpecFrame(specs: Record<string, PColumnSpec>): PoolEntry<SpecFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n const filtered = Object.fromEntries(\n Object.entries(specs)\n .filter(([, spec]) => ValueTypes.has(spec.valueType))\n .map(([id, spec]) => [id, resolveAnnotationParents(spec)]),\n );\n try {\n if (logPFrames()) {\n this.logger.info(`createSpecFrame: ${Object.keys(filtered).length} columns`);\n }\n return this.frames.acquire(filtered);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`createSpecFrame failed`);\n error.cause = ensureError(err);\n throw error;\n }\n }\n\n listColumns(handle: SpecFrameHandle): PColumnInfo[] {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`listColumns: handle = ${handle}`);\n }\n return pframe.listColumns();\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`listColumns failed`);\n error.cause = new Error(`handle: ${handle}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n buildQuery(input: BuildQueryInput): SpecQueryJoinEntry {\n try {\n if (logPFrames()) {\n this.logger.info(`buildQuery: input: ${JSON.stringify(input)}`);\n }\n return buildQuery(input);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`buildQuery failed`);\n error.cause = new Error(`input: ${JSON.stringify(input)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n discoverColumns(\n handle: SpecFrameHandle,\n request: DiscoverColumnsRequest,\n ): DiscoverColumnsResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(\n `discoverColumns: handle = ${handle}, request: ${JSON.stringify(request)}`,\n );\n }\n const result = pframe.discoverColumns(request);\n // Backward-compat shim: pframes-rs >= 1.1.31 dropped the `qualifications`\n return {\n ...result,\n hits: result.hits.map((hit) => ({\n ...hit,\n path: hit.path.map((step) =>\n step.type === \"linker\" ? { ...step, qualifications: [] } : step,\n ),\n })),\n };\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`discoverColumns failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n deleteColumn(handle: SpecFrameHandle, request: DeleteColumnRequest): DeleteColumnResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`deleteColumn: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = {\n axes: pframe.deleteColumns({ columns: request.axes, delete: request.delete }).columns,\n };\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`deleteColumn failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n evaluateQuery(handle: SpecFrameHandle, request: SpecQuery): EvaluateQueryResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`evaluateQuery: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = pframe.evaluateQuery(request);\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`evaluateQuery failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n expandAxes(spec: AxesSpec): AxesId {\n try {\n return expandAxes(spec);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`expandAxes failed`);\n error.cause = new Error(`spec: ${JSON.stringify(spec)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n collapseAxes(ids: AxesId): AxesSpec {\n try {\n return collapseAxes(ids);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`collapseAxes failed`);\n error.cause = new Error(`ids: ${JSON.stringify(ids)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n findAxis(spec: AxesSpec, selector: SingleAxisSelector): number {\n try {\n return findAxis(spec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findAxis failed`);\n error.cause = new Error(\n `spec: ${JSON.stringify(spec)}, ` +\n `selector: ${JSON.stringify(selector)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n findTableColumn(tableSpec: PTableColumnSpec[], selector: PTableColumnId): number {\n try {\n return findTableColumn(tableSpec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findTableColumn failed`);\n error.cause = new Error(\n `selector: ${JSON.stringify(selector)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async dispose(): Promise<void> {\n await this.frames.dispose();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.dispose();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"spec_driver.cjs","names":["ConsoleLoggerAdapter","PFramePool","ValueType","logPFrames","PFrameSpecDriverError"],"sources":["../src/spec_driver.ts"],"sourcesContent":["import {\n buildQuery,\n expandAxes,\n collapseAxes,\n findAxis,\n findTableColumn,\n rewriteLegacyFilters,\n} from \"@milaboratories/pframes-rs-wasm\";\nimport type {\n AxesId,\n AxesSpec,\n BuildQueryInput,\n DataQueryBooleanExpression,\n PColumnInfo,\n PColumnSpec,\n PFrameSpecDriver,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n SingleAxisSelector,\n SpecFrameHandle,\n SpecQueryJoinEntry,\n PoolEntry,\n DiscoverColumnsRequest,\n DiscoverColumnsResponse,\n DeleteColumnRequest,\n DeleteColumnResponse,\n EvaluateQueryResponse,\n SpecQuery,\n} from \"@milaboratories/pl-model-common\";\nimport {\n PFrameSpecDriverError,\n ValueType,\n ensureError,\n resolveAnnotationParents,\n} from \"@milaboratories/pl-model-common\";\nimport { type MiLogger, ConsoleLoggerAdapter } from \"@milaboratories/helpers\";\nimport { PFramePool } from \"./pframe_pool\";\nimport { logPFrames } from \"./logging\";\n\n/**\n * Manages spec-only PFrame instances (WASM) with handle-based lifecycle.\n *\n * All operations are synchronous — WASM computes results immediately.\n */\nexport class SpecDriver implements PFrameSpecDriver, AsyncDisposable {\n private readonly logger: MiLogger;\n private readonly frames: PFramePool;\n\n public constructor(options?: { logger?: MiLogger }) {\n this.logger = options?.logger ?? new ConsoleLoggerAdapter();\n this.frames = new PFramePool(this.logger);\n }\n\n createSpecFrame(specs: Record<string, PColumnSpec>): PoolEntry<SpecFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n const filtered = Object.fromEntries(\n Object.entries(specs)\n .filter(([, spec]) => ValueTypes.has(spec.valueType))\n .map(([id, spec]) => [id, resolveAnnotationParents(spec)]),\n );\n try {\n if (logPFrames()) {\n this.logger.info(`createSpecFrame: ${Object.keys(filtered).length} columns`);\n }\n return this.frames.acquire(filtered);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`createSpecFrame failed`);\n error.cause = ensureError(err);\n throw error;\n }\n }\n\n listColumns(handle: SpecFrameHandle): PColumnInfo[] {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`listColumns: handle = ${handle}`);\n }\n return pframe.listColumns();\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`listColumns failed`);\n error.cause = new Error(`handle: ${handle}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n buildQuery(input: BuildQueryInput): SpecQueryJoinEntry {\n try {\n if (logPFrames()) {\n this.logger.info(`buildQuery: input: ${JSON.stringify(input)}`);\n }\n return buildQuery(input);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`buildQuery failed`);\n error.cause = new Error(`input: ${JSON.stringify(input)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n discoverColumns(\n handle: SpecFrameHandle,\n request: DiscoverColumnsRequest,\n ): DiscoverColumnsResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(\n `discoverColumns: handle = ${handle}, request: ${JSON.stringify(request)}`,\n );\n }\n const result = pframe.discoverColumns(request);\n // Backward-compat shim: pframes-rs >= 1.1.31 dropped the `qualifications`\n return {\n ...result,\n hits: result.hits.map((hit) => ({\n ...hit,\n path: hit.path.map((step) =>\n step.type === \"linker\" ? { ...step, qualifications: [] } : step,\n ),\n })),\n };\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`discoverColumns failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n deleteColumn(handle: SpecFrameHandle, request: DeleteColumnRequest): DeleteColumnResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`deleteColumn: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = {\n axes: pframe.deleteColumns({ columns: request.axes, delete: request.delete }).columns,\n };\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`deleteColumn failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n evaluateQuery(handle: SpecFrameHandle, request: SpecQuery): EvaluateQueryResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`evaluateQuery: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = pframe.evaluateQuery(request);\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`evaluateQuery failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n expandAxes(spec: AxesSpec): AxesId {\n try {\n return expandAxes(spec);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`expandAxes failed`);\n error.cause = new Error(`spec: ${JSON.stringify(spec)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n collapseAxes(ids: AxesId): AxesSpec {\n try {\n return collapseAxes(ids);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`collapseAxes failed`);\n error.cause = new Error(`ids: ${JSON.stringify(ids)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n findAxis(spec: AxesSpec, selector: SingleAxisSelector): number {\n try {\n return findAxis(spec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findAxis failed`);\n error.cause = new Error(\n `spec: ${JSON.stringify(spec)}, ` +\n `selector: ${JSON.stringify(selector)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n findTableColumn(tableSpec: PTableColumnSpec[], selector: PTableColumnId): number {\n try {\n return findTableColumn(tableSpec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findTableColumn failed`);\n error.cause = new Error(\n `selector: ${JSON.stringify(selector)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n rewriteLegacyFilters(request: {\n tableSpec: PTableColumnSpec[];\n filters: PTableRecordFilter[];\n }): DataQueryBooleanExpression[] {\n try {\n return rewriteLegacyFilters(request);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`rewriteLegacyFilters failed`);\n error.cause = new Error(\n `request: ${JSON.stringify(request)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async dispose(): Promise<void> {\n await this.frames.dispose();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.dispose();\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AxesId, AxesSpec, BuildQueryInput, DeleteColumnRequest, DeleteColumnResponse, DiscoverColumnsRequest, DiscoverColumnsResponse, EvaluateQueryResponse, PColumnInfo, PColumnSpec, PFrameSpecDriver, PTableColumnId, PTableColumnSpec, PoolEntry, SingleAxisSelector, SpecFrameHandle, SpecQuery, SpecQueryJoinEntry } from "@milaboratories/pl-model-common";
1
+ import { AxesId, AxesSpec, BuildQueryInput, DataQueryBooleanExpression, DeleteColumnRequest, DeleteColumnResponse, DiscoverColumnsRequest, DiscoverColumnsResponse, EvaluateQueryResponse, PColumnInfo, PColumnSpec, PFrameSpecDriver, PTableColumnId, PTableColumnSpec, PTableRecordFilter, PoolEntry, SingleAxisSelector, SpecFrameHandle, SpecQuery, SpecQueryJoinEntry } from "@milaboratories/pl-model-common";
2
2
  import { MiLogger } from "@milaboratories/helpers";
3
3
 
4
4
  //#region src/spec_driver.d.ts
@@ -23,6 +23,10 @@ declare class SpecDriver implements PFrameSpecDriver, AsyncDisposable {
23
23
  collapseAxes(ids: AxesId): AxesSpec;
24
24
  findAxis(spec: AxesSpec, selector: SingleAxisSelector): number;
25
25
  findTableColumn(tableSpec: PTableColumnSpec[], selector: PTableColumnId): number;
26
+ rewriteLegacyFilters(request: {
27
+ tableSpec: PTableColumnSpec[];
28
+ filters: PTableRecordFilter[];
29
+ }): DataQueryBooleanExpression[];
26
30
  dispose(): Promise<void>;
27
31
  [Symbol.asyncDispose](): Promise<void>;
28
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spec_driver.d.ts","names":[],"sources":["../src/spec_driver.ts"],"mappings":";;;;;;AA0CA;;;cAAa,UAAA,YAAsB,gBAAA,EAAkB,eAAA;EAAA,iBAClC,MAAA;EAAA,iBACA,MAAA;cAEE,OAAA;IAAY,MAAA,GAAS,QAAA;EAAA;EAKxC,eAAA,CAAgB,KAAA,EAAO,MAAA,SAAe,WAAA,IAAe,SAAA,CAAU,eAAA;EAmB/D,WAAA,CAAY,MAAA,EAAQ,eAAA,GAAkB,WAAA;EActC,UAAA,CAAW,KAAA,EAAO,eAAA,GAAkB,kBAAA;EAapC,eAAA,CACE,MAAA,EAAQ,eAAA,EACR,OAAA,EAAS,sBAAA,GACR,uBAAA;EA8BH,YAAA,CAAa,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,mBAAA,GAAsB,oBAAA;EAqBrE,aAAA,CAAc,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,SAAA,GAAY,qBAAA;EAmB5D,UAAA,CAAW,IAAA,EAAM,QAAA,GAAW,MAAA;EAU5B,YAAA,CAAa,GAAA,EAAK,MAAA,GAAS,QAAA;EAU3B,QAAA,CAAS,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,kBAAA;EAcnC,eAAA,CAAgB,SAAA,EAAW,gBAAA,IAAoB,QAAA,EAAU,cAAA;EAYnD,OAAA,CAAA,GAAW,OAAA;EAAA,CAIV,MAAA,CAAO,YAAA,KAAiB,OAAA;AAAA"}
1
+ {"version":3,"file":"spec_driver.d.ts","names":[],"sources":["../src/spec_driver.ts"],"mappings":";;;;;;AA6CA;;;cAAa,UAAA,YAAsB,gBAAA,EAAkB,eAAA;EAAA,iBAClC,MAAA;EAAA,iBACA,MAAA;cAEE,OAAA;IAAY,MAAA,GAAS,QAAA;EAAA;EAKxC,eAAA,CAAgB,KAAA,EAAO,MAAA,SAAe,WAAA,IAAe,SAAA,CAAU,eAAA;EAmB/D,WAAA,CAAY,MAAA,EAAQ,eAAA,GAAkB,WAAA;EActC,UAAA,CAAW,KAAA,EAAO,eAAA,GAAkB,kBAAA;EAapC,eAAA,CACE,MAAA,EAAQ,eAAA,EACR,OAAA,EAAS,sBAAA,GACR,uBAAA;EA8BH,YAAA,CAAa,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,mBAAA,GAAsB,oBAAA;EAqBrE,aAAA,CAAc,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,SAAA,GAAY,qBAAA;EAmB5D,UAAA,CAAW,IAAA,EAAM,QAAA,GAAW,MAAA;EAU5B,YAAA,CAAa,GAAA,EAAK,MAAA,GAAS,QAAA;EAU3B,QAAA,CAAS,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,kBAAA;EAcnC,eAAA,CAAgB,SAAA,EAAW,gBAAA,IAAoB,QAAA,EAAU,cAAA;EAYzD,oBAAA,CAAqB,OAAA;IACnB,SAAA,EAAW,gBAAA;IACX,OAAA,EAAS,kBAAA;EAAA,IACP,0BAAA;EAYE,OAAA,CAAA,GAAW,OAAA;EAAA,CAIV,MAAA,CAAO,YAAA,KAAiB,OAAA;AAAA"}
@@ -1,6 +1,6 @@
1
1
  import { logPFrames } from "./logging.js";
2
2
  import { PFramePool } from "./pframe_pool.js";
3
- import { buildQuery, collapseAxes, expandAxes, findAxis, findTableColumn } from "@milaboratories/pframes-rs-wasm";
3
+ import { buildQuery, collapseAxes, expandAxes, findAxis, findTableColumn, rewriteLegacyFilters } from "@milaboratories/pframes-rs-wasm";
4
4
  import { PFrameSpecDriverError, ValueType, ensureError, resolveAnnotationParents } from "@milaboratories/pl-model-common";
5
5
  import { ConsoleLoggerAdapter } from "@milaboratories/helpers";
6
6
  //#region src/spec_driver.ts
@@ -131,6 +131,15 @@ var SpecDriver = class {
131
131
  throw error;
132
132
  }
133
133
  }
134
+ rewriteLegacyFilters(request) {
135
+ try {
136
+ return rewriteLegacyFilters(request);
137
+ } catch (err) {
138
+ const error = new PFrameSpecDriverError(`rewriteLegacyFilters failed`);
139
+ error.cause = /* @__PURE__ */ new Error(`request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
140
+ throw error;
141
+ }
142
+ }
134
143
  async dispose() {
135
144
  await this.frames.dispose();
136
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spec_driver.js","names":[],"sources":["../src/spec_driver.ts"],"sourcesContent":["import {\n buildQuery,\n expandAxes,\n collapseAxes,\n findAxis,\n findTableColumn,\n} from \"@milaboratories/pframes-rs-wasm\";\nimport type {\n AxesId,\n AxesSpec,\n BuildQueryInput,\n PColumnInfo,\n PColumnSpec,\n PFrameSpecDriver,\n PTableColumnId,\n PTableColumnSpec,\n SingleAxisSelector,\n SpecFrameHandle,\n SpecQueryJoinEntry,\n PoolEntry,\n DiscoverColumnsRequest,\n DiscoverColumnsResponse,\n DeleteColumnRequest,\n DeleteColumnResponse,\n EvaluateQueryResponse,\n SpecQuery,\n} from \"@milaboratories/pl-model-common\";\nimport {\n PFrameSpecDriverError,\n ValueType,\n ensureError,\n resolveAnnotationParents,\n} from \"@milaboratories/pl-model-common\";\nimport { type MiLogger, ConsoleLoggerAdapter } from \"@milaboratories/helpers\";\nimport { PFramePool } from \"./pframe_pool\";\nimport { logPFrames } from \"./logging\";\n\n/**\n * Manages spec-only PFrame instances (WASM) with handle-based lifecycle.\n *\n * All operations are synchronous — WASM computes results immediately.\n */\nexport class SpecDriver implements PFrameSpecDriver, AsyncDisposable {\n private readonly logger: MiLogger;\n private readonly frames: PFramePool;\n\n public constructor(options?: { logger?: MiLogger }) {\n this.logger = options?.logger ?? new ConsoleLoggerAdapter();\n this.frames = new PFramePool(this.logger);\n }\n\n createSpecFrame(specs: Record<string, PColumnSpec>): PoolEntry<SpecFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n const filtered = Object.fromEntries(\n Object.entries(specs)\n .filter(([, spec]) => ValueTypes.has(spec.valueType))\n .map(([id, spec]) => [id, resolveAnnotationParents(spec)]),\n );\n try {\n if (logPFrames()) {\n this.logger.info(`createSpecFrame: ${Object.keys(filtered).length} columns`);\n }\n return this.frames.acquire(filtered);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`createSpecFrame failed`);\n error.cause = ensureError(err);\n throw error;\n }\n }\n\n listColumns(handle: SpecFrameHandle): PColumnInfo[] {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`listColumns: handle = ${handle}`);\n }\n return pframe.listColumns();\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`listColumns failed`);\n error.cause = new Error(`handle: ${handle}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n buildQuery(input: BuildQueryInput): SpecQueryJoinEntry {\n try {\n if (logPFrames()) {\n this.logger.info(`buildQuery: input: ${JSON.stringify(input)}`);\n }\n return buildQuery(input);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`buildQuery failed`);\n error.cause = new Error(`input: ${JSON.stringify(input)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n discoverColumns(\n handle: SpecFrameHandle,\n request: DiscoverColumnsRequest,\n ): DiscoverColumnsResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(\n `discoverColumns: handle = ${handle}, request: ${JSON.stringify(request)}`,\n );\n }\n const result = pframe.discoverColumns(request);\n // Backward-compat shim: pframes-rs >= 1.1.31 dropped the `qualifications`\n return {\n ...result,\n hits: result.hits.map((hit) => ({\n ...hit,\n path: hit.path.map((step) =>\n step.type === \"linker\" ? { ...step, qualifications: [] } : step,\n ),\n })),\n };\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`discoverColumns failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n deleteColumn(handle: SpecFrameHandle, request: DeleteColumnRequest): DeleteColumnResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`deleteColumn: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = {\n axes: pframe.deleteColumns({ columns: request.axes, delete: request.delete }).columns,\n };\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`deleteColumn failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n evaluateQuery(handle: SpecFrameHandle, request: SpecQuery): EvaluateQueryResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`evaluateQuery: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = pframe.evaluateQuery(request);\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`evaluateQuery failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n expandAxes(spec: AxesSpec): AxesId {\n try {\n return expandAxes(spec);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`expandAxes failed`);\n error.cause = new Error(`spec: ${JSON.stringify(spec)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n collapseAxes(ids: AxesId): AxesSpec {\n try {\n return collapseAxes(ids);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`collapseAxes failed`);\n error.cause = new Error(`ids: ${JSON.stringify(ids)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n findAxis(spec: AxesSpec, selector: SingleAxisSelector): number {\n try {\n return findAxis(spec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findAxis failed`);\n error.cause = new Error(\n `spec: ${JSON.stringify(spec)}, ` +\n `selector: ${JSON.stringify(selector)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n findTableColumn(tableSpec: PTableColumnSpec[], selector: PTableColumnId): number {\n try {\n return findTableColumn(tableSpec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findTableColumn failed`);\n error.cause = new Error(\n `selector: ${JSON.stringify(selector)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async dispose(): Promise<void> {\n await this.frames.dispose();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.dispose();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"spec_driver.js","names":[],"sources":["../src/spec_driver.ts"],"sourcesContent":["import {\n buildQuery,\n expandAxes,\n collapseAxes,\n findAxis,\n findTableColumn,\n rewriteLegacyFilters,\n} from \"@milaboratories/pframes-rs-wasm\";\nimport type {\n AxesId,\n AxesSpec,\n BuildQueryInput,\n DataQueryBooleanExpression,\n PColumnInfo,\n PColumnSpec,\n PFrameSpecDriver,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n SingleAxisSelector,\n SpecFrameHandle,\n SpecQueryJoinEntry,\n PoolEntry,\n DiscoverColumnsRequest,\n DiscoverColumnsResponse,\n DeleteColumnRequest,\n DeleteColumnResponse,\n EvaluateQueryResponse,\n SpecQuery,\n} from \"@milaboratories/pl-model-common\";\nimport {\n PFrameSpecDriverError,\n ValueType,\n ensureError,\n resolveAnnotationParents,\n} from \"@milaboratories/pl-model-common\";\nimport { type MiLogger, ConsoleLoggerAdapter } from \"@milaboratories/helpers\";\nimport { PFramePool } from \"./pframe_pool\";\nimport { logPFrames } from \"./logging\";\n\n/**\n * Manages spec-only PFrame instances (WASM) with handle-based lifecycle.\n *\n * All operations are synchronous — WASM computes results immediately.\n */\nexport class SpecDriver implements PFrameSpecDriver, AsyncDisposable {\n private readonly logger: MiLogger;\n private readonly frames: PFramePool;\n\n public constructor(options?: { logger?: MiLogger }) {\n this.logger = options?.logger ?? new ConsoleLoggerAdapter();\n this.frames = new PFramePool(this.logger);\n }\n\n createSpecFrame(specs: Record<string, PColumnSpec>): PoolEntry<SpecFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n const filtered = Object.fromEntries(\n Object.entries(specs)\n .filter(([, spec]) => ValueTypes.has(spec.valueType))\n .map(([id, spec]) => [id, resolveAnnotationParents(spec)]),\n );\n try {\n if (logPFrames()) {\n this.logger.info(`createSpecFrame: ${Object.keys(filtered).length} columns`);\n }\n return this.frames.acquire(filtered);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`createSpecFrame failed`);\n error.cause = ensureError(err);\n throw error;\n }\n }\n\n listColumns(handle: SpecFrameHandle): PColumnInfo[] {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`listColumns: handle = ${handle}`);\n }\n return pframe.listColumns();\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`listColumns failed`);\n error.cause = new Error(`handle: ${handle}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n buildQuery(input: BuildQueryInput): SpecQueryJoinEntry {\n try {\n if (logPFrames()) {\n this.logger.info(`buildQuery: input: ${JSON.stringify(input)}`);\n }\n return buildQuery(input);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`buildQuery failed`);\n error.cause = new Error(`input: ${JSON.stringify(input)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n discoverColumns(\n handle: SpecFrameHandle,\n request: DiscoverColumnsRequest,\n ): DiscoverColumnsResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(\n `discoverColumns: handle = ${handle}, request: ${JSON.stringify(request)}`,\n );\n }\n const result = pframe.discoverColumns(request);\n // Backward-compat shim: pframes-rs >= 1.1.31 dropped the `qualifications`\n return {\n ...result,\n hits: result.hits.map((hit) => ({\n ...hit,\n path: hit.path.map((step) =>\n step.type === \"linker\" ? { ...step, qualifications: [] } : step,\n ),\n })),\n };\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`discoverColumns failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n deleteColumn(handle: SpecFrameHandle, request: DeleteColumnRequest): DeleteColumnResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`deleteColumn: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = {\n axes: pframe.deleteColumns({ columns: request.axes, delete: request.delete }).columns,\n };\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`deleteColumn failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n evaluateQuery(handle: SpecFrameHandle, request: SpecQuery): EvaluateQueryResponse {\n const pframe = this.frames.getByKey(handle);\n try {\n if (logPFrames()) {\n this.logger.info(`evaluateQuery: handle = ${handle}, request: ${JSON.stringify(request)}`);\n }\n const result = pframe.evaluateQuery(request);\n return result;\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`evaluateQuery failed`);\n error.cause = new Error(\n `handle: ${handle}, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n expandAxes(spec: AxesSpec): AxesId {\n try {\n return expandAxes(spec);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`expandAxes failed`);\n error.cause = new Error(`spec: ${JSON.stringify(spec)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n collapseAxes(ids: AxesId): AxesSpec {\n try {\n return collapseAxes(ids);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`collapseAxes failed`);\n error.cause = new Error(`ids: ${JSON.stringify(ids)}, ` + `error:\\n${ensureError(err)}`);\n throw error;\n }\n }\n\n findAxis(spec: AxesSpec, selector: SingleAxisSelector): number {\n try {\n return findAxis(spec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findAxis failed`);\n error.cause = new Error(\n `spec: ${JSON.stringify(spec)}, ` +\n `selector: ${JSON.stringify(selector)}, ` +\n `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n findTableColumn(tableSpec: PTableColumnSpec[], selector: PTableColumnId): number {\n try {\n return findTableColumn(tableSpec, selector);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`findTableColumn failed`);\n error.cause = new Error(\n `selector: ${JSON.stringify(selector)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n rewriteLegacyFilters(request: {\n tableSpec: PTableColumnSpec[];\n filters: PTableRecordFilter[];\n }): DataQueryBooleanExpression[] {\n try {\n return rewriteLegacyFilters(request);\n } catch (err: unknown) {\n const error = new PFrameSpecDriverError(`rewriteLegacyFilters failed`);\n error.cause = new Error(\n `request: ${JSON.stringify(request)}, ` + `error:\\n${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async dispose(): Promise<void> {\n await this.frames.dispose();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.dispose();\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pf-spec-driver",
3
- "version": "1.3.21",
3
+ "version": "1.4.0",
4
4
  "description": "PSpecDriver implementation: spec-only PFrame operations via WASM",
5
5
  "keywords": [],
6
6
  "license": "UNLICENSED",
@@ -20,18 +20,18 @@
20
20
  }
21
21
  },
22
22
  "dependencies": {
23
- "@milaboratories/pframes-rs-wasm": "1.1.37",
23
+ "@milaboratories/pframes-rs-wasm": "1.1.38",
24
24
  "@noble/hashes": "^2.0.1",
25
25
  "@milaboratories/helpers": "1.14.2",
26
- "@milaboratories/pl-model-common": "1.42.0",
27
- "@milaboratories/pl-model-middle-layer": "1.24.0"
26
+ "@milaboratories/pl-model-common": "1.43.0",
27
+ "@milaboratories/pl-model-middle-layer": "1.26.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@vitest/coverage-istanbul": "^4.1.3",
31
31
  "typescript": "~5.9.3",
32
32
  "vitest": "^4.1.3",
33
- "@milaboratories/build-configs": "2.0.0",
34
33
  "@milaboratories/ts-builder": "1.5.0",
34
+ "@milaboratories/build-configs": "2.0.0",
35
35
  "@milaboratories/ts-configs": "1.2.3"
36
36
  },
37
37
  "scripts": {
@@ -4,16 +4,19 @@ import {
4
4
  collapseAxes,
5
5
  findAxis,
6
6
  findTableColumn,
7
+ rewriteLegacyFilters,
7
8
  } from "@milaboratories/pframes-rs-wasm";
8
9
  import type {
9
10
  AxesId,
10
11
  AxesSpec,
11
12
  BuildQueryInput,
13
+ DataQueryBooleanExpression,
12
14
  PColumnInfo,
13
15
  PColumnSpec,
14
16
  PFrameSpecDriver,
15
17
  PTableColumnId,
16
18
  PTableColumnSpec,
19
+ PTableRecordFilter,
17
20
  SingleAxisSelector,
18
21
  SpecFrameHandle,
19
22
  SpecQueryJoinEntry,
@@ -214,6 +217,21 @@ export class SpecDriver implements PFrameSpecDriver, AsyncDisposable {
214
217
  }
215
218
  }
216
219
 
220
+ rewriteLegacyFilters(request: {
221
+ tableSpec: PTableColumnSpec[];
222
+ filters: PTableRecordFilter[];
223
+ }): DataQueryBooleanExpression[] {
224
+ try {
225
+ return rewriteLegacyFilters(request);
226
+ } catch (err: unknown) {
227
+ const error = new PFrameSpecDriverError(`rewriteLegacyFilters failed`);
228
+ error.cause = new Error(
229
+ `request: ${JSON.stringify(request)}, ` + `error:\n${ensureError(err)}`,
230
+ );
231
+ throw error;
232
+ }
233
+ }
234
+
217
235
  async dispose(): Promise<void> {
218
236
  await this.frames.dispose();
219
237
  }