@milaboratories/pf-driver 1.0.60 → 1.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.cjs +59 -0
- package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.js +58 -0
- package/dist/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/data_info_helpers.cjs +20 -19
- package/dist/data_info_helpers.cjs.map +1 -1
- package/dist/data_info_helpers.d.ts +6 -2
- package/dist/data_info_helpers.js +19 -17
- package/dist/data_info_helpers.js.map +1 -1
- package/dist/driver_decl.d.ts +38 -34
- package/dist/driver_double.cjs +98 -97
- package/dist/driver_double.cjs.map +1 -1
- package/dist/driver_double.d.ts +17 -10
- package/dist/driver_double.js +95 -95
- package/dist/driver_double.js.map +1 -1
- package/dist/driver_impl.cjs +233 -296
- package/dist/driver_impl.cjs.map +1 -1
- package/dist/driver_impl.d.ts +59 -52
- package/dist/driver_impl.js +232 -294
- package/dist/driver_impl.js.map +1 -1
- package/dist/index.cjs +10 -14
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -4
- package/dist/logging.cjs +4 -3
- package/dist/logging.cjs.map +1 -1
- package/dist/logging.js +4 -2
- package/dist/logging.js.map +1 -1
- package/dist/pframe_pool.cjs +177 -196
- package/dist/pframe_pool.cjs.map +1 -1
- package/dist/pframe_pool.d.ts +12 -31
- package/dist/pframe_pool.js +177 -194
- package/dist/pframe_pool.js.map +1 -1
- package/dist/ptable_cache_per_frame.cjs +52 -63
- package/dist/ptable_cache_per_frame.cjs.map +1 -1
- package/dist/ptable_cache_per_frame.d.ts +16 -23
- package/dist/ptable_cache_per_frame.js +51 -61
- package/dist/ptable_cache_per_frame.js.map +1 -1
- package/dist/ptable_cache_plain.cjs +41 -49
- package/dist/ptable_cache_plain.cjs.map +1 -1
- package/dist/ptable_cache_plain.d.ts +15 -19
- package/dist/ptable_cache_plain.js +40 -47
- package/dist/ptable_cache_plain.js.map +1 -1
- package/dist/ptable_def_pool.cjs +45 -53
- package/dist/ptable_def_pool.cjs.map +1 -1
- package/dist/ptable_def_pool.d.ts +3 -20
- package/dist/ptable_def_pool.js +45 -51
- package/dist/ptable_def_pool.js.map +1 -1
- package/dist/ptable_pool.cjs +145 -185
- package/dist/ptable_pool.cjs.map +1 -1
- package/dist/ptable_pool.d.ts +6 -28
- package/dist/ptable_pool.js +145 -183
- package/dist/ptable_pool.js.map +1 -1
- package/dist/ptable_shared.cjs +6 -5
- package/dist/ptable_shared.cjs.map +1 -1
- package/dist/ptable_shared.d.ts +1 -17
- package/dist/ptable_shared.js +5 -3
- package/dist/ptable_shared.js.map +1 -1
- package/package.json +5 -5
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs +0 -77
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs.map +0 -1
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js +0 -74
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js.map +0 -1
- package/dist/data_info_helpers.d.ts.map +0 -1
- package/dist/driver_decl.d.ts.map +0 -1
- package/dist/driver_double.d.ts.map +0 -1
- package/dist/driver_double.test.d.ts +0 -2
- package/dist/driver_double.test.d.ts.map +0 -1
- package/dist/driver_impl.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logging.d.ts +0 -2
- package/dist/logging.d.ts.map +0 -1
- package/dist/pframe_pool.d.ts.map +0 -1
- package/dist/ptable_cache_per_frame.d.ts.map +0 -1
- package/dist/ptable_cache_plain.d.ts.map +0 -1
- package/dist/ptable_def_pool.d.ts.map +0 -1
- package/dist/ptable_pool.d.ts.map +0 -1
- package/dist/ptable_shared.d.ts.map +0 -1
package/dist/ptable_pool.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptable_pool.cjs","sources":["../src/ptable_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n PFrameDriverError,\n type PFrameHandle,\n type PTableHandle,\n type JoinEntry,\n type JsonSerializable,\n type PColumnValue,\n type PObjectId,\n} from \"@platforma-sdk/model\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { PFramePool } from \"./pframe_pool\";\nimport {\n FullPTableDefV1,\n FullPTableDefV2,\n stableKeyFromFullPTableDef,\n type FullPTableDef,\n} from \"./ptable_shared\";\nimport type { PTableDefPool } from \"./ptable_def_pool\";\n\nexport class PTableHolder implements Disposable {\n private readonly abortController = new AbortController();\n private readonly combinedDisposeSignal: AbortSignal;\n\n constructor(\n public readonly pFrame: PFrameHandle,\n pFrameDisposeSignal: AbortSignal,\n public readonly pTablePromise: Promise<PFrameInternal.PTableV8>,\n private readonly predecessor?: PoolEntry<PTableHandle, PTableHolder>,\n ) {\n this.combinedDisposeSignal = AbortSignal.any([\n pFrameDisposeSignal,\n this.abortController.signal,\n ]);\n }\n\n public get disposeSignal(): AbortSignal {\n return this.combinedDisposeSignal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n this.predecessor?.unref();\n void this.pTablePromise\n .then((pTable) => pTable.dispose())\n .catch(() => {\n /* mute error */\n });\n }\n}\n\nexport class PTablePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<\n FullPTableDef,\n PTableHandle,\n PTableHolder\n> {\n constructor(\n private readonly pFrames: PFramePool<TreeEntry>,\n private readonly pTableDefs: PTableDefPool,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableHolder {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `PTable creation (pTableHandle = ${key}): ` + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n\n switch (params.type) {\n case \"v1\":\n return this.createNewResourceV1(params, key);\n case \"v2\":\n return this.createNewResourceV2(params, key);\n default:\n // @ts-expect-error `params.type` is a string, but we want to make sure all cases are handled\n throw new PFrameDriverError(`Unsupported FullPTableDef type: ${params.type}`);\n }\n }\n\n protected createNewResourceV1(params: FullPTableDefV1, key: PTableHandle): PTableHolder {\n const { def, pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n // 3. Sort\n if (def.sorting.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n sorting: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const sortedTable = pTablePromise.then((pTable) => pTable.sort(key, def.sorting));\n return new PTableHolder(pFrameHandle, combinedSignal, sortedTable, predecessor);\n }\n\n // 2. Filter (except the case with artificial columns where cartesian creates too many rows)\n if (!hasArtificialColumns(def.src) && def.filters.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n filters: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const filteredTable = pTablePromise.then((pTable) => pTable.filter(key, def.filters));\n return new PTableHolder(pFrameHandle, combinedSignal, filteredTable, predecessor);\n }\n\n // 1. Join\n const table = pFramePromise.then((pFrame) =>\n pFrame.createTable(key, {\n src: joinEntryToInternal(def.src),\n // `def.filters` would be non-empty only when join has artificial columns\n filters: [...def.partitionFilters, ...def.filters],\n }),\n );\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n protected createNewResourceV2(params: FullPTableDefV2, key: PTableHandle): PTableHolder {\n const { pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n const table = pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def));\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n public getByKey(key: PTableHandle): PTableHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction hasArtificialColumns<T>(entry: JoinEntry<T>): boolean {\n switch (entry.type) {\n case \"column\":\n case \"slicedColumn\":\n case \"inlineColumn\":\n return false;\n case \"artificialColumn\":\n return true;\n case \"full\":\n case \"inner\":\n return entry.entries.some(hasArtificialColumns);\n case \"outer\":\n return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);\n default:\n assertNever(entry);\n }\n}\n\nfunction joinEntryToInternal(entry: JoinEntry<PObjectId>): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case \"column\":\n return {\n type: \"column\",\n columnId: entry.column,\n };\n case \"slicedColumn\":\n return {\n type: \"slicedColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axisFilters: entry.axisFilters,\n };\n case \"artificialColumn\":\n return {\n type: \"artificialColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axesIndices: entry.axesIndices,\n };\n case \"inlineColumn\":\n return {\n type: \"inlineColumn\",\n newId: entry.column.id,\n spec: entry.column.spec,\n dataInfo: {\n type: \"Json\",\n keyLength: entry.column.spec.axesSpec.length,\n data: entry.column.data.reduce(\n (acc, row) => {\n acc[JSON.stringify(row.key)] = row.val;\n return acc;\n },\n {} as Record<string, PColumnValue>,\n ),\n },\n };\n case \"inner\":\n case \"full\":\n return {\n type: entry.type,\n entries: entry.entries.map((col) => joinEntryToInternal(col)),\n };\n case \"outer\":\n return {\n type: \"outer\",\n primary: joinEntryToInternal(entry.primary),\n secondary: entry.secondary.map((col) => joinEntryToInternal(col)),\n };\n default:\n throw new PFrameDriverError(`unsupported PFrame join entry type: ${type satisfies never}`);\n }\n}\n"],"names":["RefCountPoolBase","stableKeyFromFullPTableDef","logPFrames","bigintReplacer","PFrameDriverError","assertNever"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ptable_pool.cjs","names":["RefCountPoolBase","stableKeyFromFullPTableDef","logPFrames","bigintReplacer","PFrameDriverError"],"sources":["../src/ptable_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n PFrameDriverError,\n type PFrameHandle,\n type PTableHandle,\n type JoinEntry,\n type JsonSerializable,\n type PColumnValue,\n type PObjectId,\n} from \"@platforma-sdk/model\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { PFramePool } from \"./pframe_pool\";\nimport {\n FullPTableDefV1,\n FullPTableDefV2,\n stableKeyFromFullPTableDef,\n type FullPTableDef,\n} from \"./ptable_shared\";\nimport type { PTableDefPool } from \"./ptable_def_pool\";\n\nexport class PTableHolder implements Disposable {\n private readonly abortController = new AbortController();\n private readonly combinedDisposeSignal: AbortSignal;\n\n constructor(\n public readonly pFrame: PFrameHandle,\n pFrameDisposeSignal: AbortSignal,\n public readonly pTablePromise: Promise<PFrameInternal.PTableV8>,\n private readonly predecessor?: PoolEntry<PTableHandle, PTableHolder>,\n ) {\n this.combinedDisposeSignal = AbortSignal.any([\n pFrameDisposeSignal,\n this.abortController.signal,\n ]);\n }\n\n public get disposeSignal(): AbortSignal {\n return this.combinedDisposeSignal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n this.predecessor?.unref();\n void this.pTablePromise\n .then((pTable) => pTable.dispose())\n .catch(() => {\n /* mute error */\n });\n }\n}\n\nexport class PTablePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<\n FullPTableDef,\n PTableHandle,\n PTableHolder\n> {\n constructor(\n private readonly pFrames: PFramePool<TreeEntry>,\n private readonly pTableDefs: PTableDefPool,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableHolder {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `PTable creation (pTableHandle = ${key}): ` + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n\n switch (params.type) {\n case \"v1\":\n return this.createNewResourceV1(params, key);\n case \"v2\":\n return this.createNewResourceV2(params, key);\n default:\n // @ts-expect-error `params.type` is a string, but we want to make sure all cases are handled\n throw new PFrameDriverError(`Unsupported FullPTableDef type: ${params.type}`);\n }\n }\n\n protected createNewResourceV1(params: FullPTableDefV1, key: PTableHandle): PTableHolder {\n const { def, pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n // 3. Sort\n if (def.sorting.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n sorting: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const sortedTable = pTablePromise.then((pTable) => pTable.sort(key, def.sorting));\n return new PTableHolder(pFrameHandle, combinedSignal, sortedTable, predecessor);\n }\n\n // 2. Filter (except the case with artificial columns where cartesian creates too many rows)\n if (!hasArtificialColumns(def.src) && def.filters.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n filters: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const filteredTable = pTablePromise.then((pTable) => pTable.filter(key, def.filters));\n return new PTableHolder(pFrameHandle, combinedSignal, filteredTable, predecessor);\n }\n\n // 1. Join\n const table = pFramePromise.then((pFrame) =>\n pFrame.createTable(key, {\n src: joinEntryToInternal(def.src),\n // `def.filters` would be non-empty only when join has artificial columns\n filters: [...def.partitionFilters, ...def.filters],\n }),\n );\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n protected createNewResourceV2(params: FullPTableDefV2, key: PTableHandle): PTableHolder {\n const { pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n const table = pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def));\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n public getByKey(key: PTableHandle): PTableHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction hasArtificialColumns<T>(entry: JoinEntry<T>): boolean {\n switch (entry.type) {\n case \"column\":\n case \"slicedColumn\":\n case \"inlineColumn\":\n return false;\n case \"artificialColumn\":\n return true;\n case \"full\":\n case \"inner\":\n return entry.entries.some(hasArtificialColumns);\n case \"outer\":\n return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);\n default:\n assertNever(entry);\n }\n}\n\nfunction joinEntryToInternal(entry: JoinEntry<PObjectId>): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case \"column\":\n return {\n type: \"column\",\n columnId: entry.column,\n };\n case \"slicedColumn\":\n return {\n type: \"slicedColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axisFilters: entry.axisFilters,\n };\n case \"artificialColumn\":\n return {\n type: \"artificialColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axesIndices: entry.axesIndices,\n };\n case \"inlineColumn\":\n return {\n type: \"inlineColumn\",\n newId: entry.column.id,\n spec: entry.column.spec,\n dataInfo: {\n type: \"Json\",\n keyLength: entry.column.spec.axesSpec.length,\n data: entry.column.data.reduce(\n (acc, row) => {\n acc[JSON.stringify(row.key)] = row.val;\n return acc;\n },\n {} as Record<string, PColumnValue>,\n ),\n },\n };\n case \"inner\":\n case \"full\":\n return {\n type: entry.type,\n entries: entry.entries.map((col) => joinEntryToInternal(col)),\n };\n case \"outer\":\n return {\n type: \"outer\",\n primary: joinEntryToInternal(entry.primary),\n secondary: entry.secondary.map((col) => joinEntryToInternal(col)),\n };\n default:\n throw new PFrameDriverError(`unsupported PFrame join entry type: ${type satisfies never}`);\n }\n}\n"],"mappings":"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"}
|
package/dist/ptable_pool.d.ts
CHANGED
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
export declare class PTableHolder implements Disposable {
|
|
8
|
-
readonly pFrame: PFrameHandle;
|
|
9
|
-
readonly pTablePromise: Promise<PFrameInternal.PTableV8>;
|
|
10
|
-
private readonly predecessor?;
|
|
11
|
-
private readonly abortController;
|
|
12
|
-
private readonly combinedDisposeSignal;
|
|
13
|
-
constructor(pFrame: PFrameHandle, pFrameDisposeSignal: AbortSignal, pTablePromise: Promise<PFrameInternal.PTableV8>, predecessor?: PoolEntry<PTableHandle, PTableHolder> | undefined);
|
|
14
|
-
get disposeSignal(): AbortSignal;
|
|
15
|
-
[Symbol.dispose](): void;
|
|
16
|
-
}
|
|
17
|
-
export declare class PTablePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<FullPTableDef, PTableHandle, PTableHolder> {
|
|
18
|
-
private readonly pFrames;
|
|
19
|
-
private readonly pTableDefs;
|
|
20
|
-
private readonly logger;
|
|
21
|
-
constructor(pFrames: PFramePool<TreeEntry>, pTableDefs: PTableDefPool, logger: PFrameInternal.Logger);
|
|
22
|
-
protected calculateParamsKey(params: FullPTableDef): PTableHandle;
|
|
23
|
-
protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableHolder;
|
|
24
|
-
protected createNewResourceV1(params: FullPTableDefV1, key: PTableHandle): PTableHolder;
|
|
25
|
-
protected createNewResourceV2(params: FullPTableDefV2, key: PTableHandle): PTableHolder;
|
|
26
|
-
getByKey(key: PTableHandle): PTableHolder;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=ptable_pool.d.ts.map
|
|
1
|
+
import "./pframe_pool.js";
|
|
2
|
+
import "./ptable_shared.js";
|
|
3
|
+
import "./ptable_def_pool.js";
|
|
4
|
+
import { JsonSerializable, PFrameHandle, PTableHandle } from "@platforma-sdk/model";
|
|
5
|
+
import { PoolEntry, RefCountPoolBase } from "@milaboratories/ts-helpers";
|
|
6
|
+
import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
|
package/dist/ptable_pool.js
CHANGED
|
@@ -1,189 +1,151 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { logPFrames } from "./logging.js";
|
|
2
|
+
import { stableKeyFromFullPTableDef } from "./ptable_shared.js";
|
|
3
|
+
import { PFrameDriverError, assertNever, bigintReplacer } from "@platforma-sdk/model";
|
|
4
|
+
import { RefCountPoolBase } from "@milaboratories/ts-helpers";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
// 1. Join
|
|
93
|
-
const table = pFramePromise.then((pFrame) => pFrame.createTable(key, {
|
|
94
|
-
src: joinEntryToInternal(def.src),
|
|
95
|
-
// `def.filters` would be non-empty only when join has artificial columns
|
|
96
|
-
filters: [...def.partitionFilters, ...def.filters],
|
|
97
|
-
}));
|
|
98
|
-
return new PTableHolder(pFrameHandle, combinedSignal, table);
|
|
99
|
-
}
|
|
100
|
-
createNewResourceV2(params, key) {
|
|
101
|
-
const { pFrameHandle } = params;
|
|
102
|
-
const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);
|
|
103
|
-
const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;
|
|
104
|
-
const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));
|
|
105
|
-
const table = pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def));
|
|
106
|
-
return new PTableHolder(pFrameHandle, combinedSignal, table);
|
|
107
|
-
}
|
|
108
|
-
getByKey(key) {
|
|
109
|
-
const resource = super.tryGetByKey(key);
|
|
110
|
-
if (!resource) {
|
|
111
|
-
const error = new PFrameDriverError(`Invalid PTable handle`);
|
|
112
|
-
error.cause = new Error(`PTable with handle ${key} not found`);
|
|
113
|
-
throw error;
|
|
114
|
-
}
|
|
115
|
-
return resource;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
6
|
+
//#region src/ptable_pool.ts
|
|
7
|
+
var PTableHolder = class {
|
|
8
|
+
abortController = new AbortController();
|
|
9
|
+
combinedDisposeSignal;
|
|
10
|
+
constructor(pFrame, pFrameDisposeSignal, pTablePromise, predecessor) {
|
|
11
|
+
this.pFrame = pFrame;
|
|
12
|
+
this.pTablePromise = pTablePromise;
|
|
13
|
+
this.predecessor = predecessor;
|
|
14
|
+
this.combinedDisposeSignal = AbortSignal.any([pFrameDisposeSignal, this.abortController.signal]);
|
|
15
|
+
}
|
|
16
|
+
get disposeSignal() {
|
|
17
|
+
return this.combinedDisposeSignal;
|
|
18
|
+
}
|
|
19
|
+
[Symbol.dispose]() {
|
|
20
|
+
this.abortController.abort();
|
|
21
|
+
this.predecessor?.unref();
|
|
22
|
+
this.pTablePromise.then((pTable) => pTable.dispose()).catch(() => {});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
var PTablePool = class extends RefCountPoolBase {
|
|
26
|
+
constructor(pFrames, pTableDefs, logger) {
|
|
27
|
+
super();
|
|
28
|
+
this.pFrames = pFrames;
|
|
29
|
+
this.pTableDefs = pTableDefs;
|
|
30
|
+
this.logger = logger;
|
|
31
|
+
}
|
|
32
|
+
calculateParamsKey(params) {
|
|
33
|
+
return stableKeyFromFullPTableDef(params);
|
|
34
|
+
}
|
|
35
|
+
createNewResource(params, key) {
|
|
36
|
+
if (logPFrames()) this.logger("info", `PTable creation (pTableHandle = ${key}): ${JSON.stringify(params, bigintReplacer)}`);
|
|
37
|
+
switch (params.type) {
|
|
38
|
+
case "v1": return this.createNewResourceV1(params, key);
|
|
39
|
+
case "v2": return this.createNewResourceV2(params, key);
|
|
40
|
+
default: throw new PFrameDriverError(`Unsupported FullPTableDef type: ${params.type}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
createNewResourceV1(params, key) {
|
|
44
|
+
const { def, pFrameHandle } = params;
|
|
45
|
+
const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);
|
|
46
|
+
const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;
|
|
47
|
+
const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));
|
|
48
|
+
if (def.sorting.length > 0) {
|
|
49
|
+
const predecessor = this.acquire({
|
|
50
|
+
...params,
|
|
51
|
+
def: {
|
|
52
|
+
...def,
|
|
53
|
+
sorting: []
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const { resource: { pTablePromise } } = predecessor;
|
|
57
|
+
return new PTableHolder(pFrameHandle, combinedSignal, pTablePromise.then((pTable) => pTable.sort(key, def.sorting)), predecessor);
|
|
58
|
+
}
|
|
59
|
+
if (!hasArtificialColumns(def.src) && def.filters.length > 0) {
|
|
60
|
+
const predecessor = this.acquire({
|
|
61
|
+
...params,
|
|
62
|
+
def: {
|
|
63
|
+
...def,
|
|
64
|
+
filters: []
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const { resource: { pTablePromise } } = predecessor;
|
|
68
|
+
return new PTableHolder(pFrameHandle, combinedSignal, pTablePromise.then((pTable) => pTable.filter(key, def.filters)), predecessor);
|
|
69
|
+
}
|
|
70
|
+
return new PTableHolder(pFrameHandle, combinedSignal, pFramePromise.then((pFrame) => pFrame.createTable(key, {
|
|
71
|
+
src: joinEntryToInternal(def.src),
|
|
72
|
+
filters: [...def.partitionFilters, ...def.filters]
|
|
73
|
+
})));
|
|
74
|
+
}
|
|
75
|
+
createNewResourceV2(params, key) {
|
|
76
|
+
const { pFrameHandle } = params;
|
|
77
|
+
const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);
|
|
78
|
+
const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;
|
|
79
|
+
return new PTableHolder(pFrameHandle, AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s)), pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def)));
|
|
80
|
+
}
|
|
81
|
+
getByKey(key) {
|
|
82
|
+
const resource = super.tryGetByKey(key);
|
|
83
|
+
if (!resource) {
|
|
84
|
+
const error = new PFrameDriverError(`Invalid PTable handle`);
|
|
85
|
+
error.cause = /* @__PURE__ */ new Error(`PTable with handle ${key} not found`);
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
return resource;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
118
91
|
function hasArtificialColumns(entry) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
case "outer":
|
|
130
|
-
return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);
|
|
131
|
-
default:
|
|
132
|
-
assertNever(entry);
|
|
133
|
-
}
|
|
92
|
+
switch (entry.type) {
|
|
93
|
+
case "column":
|
|
94
|
+
case "slicedColumn":
|
|
95
|
+
case "inlineColumn": return false;
|
|
96
|
+
case "artificialColumn": return true;
|
|
97
|
+
case "full":
|
|
98
|
+
case "inner": return entry.entries.some(hasArtificialColumns);
|
|
99
|
+
case "outer": return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);
|
|
100
|
+
default: assertNever(entry);
|
|
101
|
+
}
|
|
134
102
|
}
|
|
135
103
|
function joinEntryToInternal(entry) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
type: "outer",
|
|
180
|
-
primary: joinEntryToInternal(entry.primary),
|
|
181
|
-
secondary: entry.secondary.map((col) => joinEntryToInternal(col)),
|
|
182
|
-
};
|
|
183
|
-
default:
|
|
184
|
-
throw new PFrameDriverError(`unsupported PFrame join entry type: ${type}`);
|
|
185
|
-
}
|
|
104
|
+
const type = entry.type;
|
|
105
|
+
switch (type) {
|
|
106
|
+
case "column": return {
|
|
107
|
+
type: "column",
|
|
108
|
+
columnId: entry.column
|
|
109
|
+
};
|
|
110
|
+
case "slicedColumn": return {
|
|
111
|
+
type: "slicedColumn",
|
|
112
|
+
columnId: entry.column,
|
|
113
|
+
newId: entry.newId,
|
|
114
|
+
axisFilters: entry.axisFilters
|
|
115
|
+
};
|
|
116
|
+
case "artificialColumn": return {
|
|
117
|
+
type: "artificialColumn",
|
|
118
|
+
columnId: entry.column,
|
|
119
|
+
newId: entry.newId,
|
|
120
|
+
axesIndices: entry.axesIndices
|
|
121
|
+
};
|
|
122
|
+
case "inlineColumn": return {
|
|
123
|
+
type: "inlineColumn",
|
|
124
|
+
newId: entry.column.id,
|
|
125
|
+
spec: entry.column.spec,
|
|
126
|
+
dataInfo: {
|
|
127
|
+
type: "Json",
|
|
128
|
+
keyLength: entry.column.spec.axesSpec.length,
|
|
129
|
+
data: entry.column.data.reduce((acc, row) => {
|
|
130
|
+
acc[JSON.stringify(row.key)] = row.val;
|
|
131
|
+
return acc;
|
|
132
|
+
}, {})
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
case "inner":
|
|
136
|
+
case "full": return {
|
|
137
|
+
type: entry.type,
|
|
138
|
+
entries: entry.entries.map((col) => joinEntryToInternal(col))
|
|
139
|
+
};
|
|
140
|
+
case "outer": return {
|
|
141
|
+
type: "outer",
|
|
142
|
+
primary: joinEntryToInternal(entry.primary),
|
|
143
|
+
secondary: entry.secondary.map((col) => joinEntryToInternal(col))
|
|
144
|
+
};
|
|
145
|
+
default: throw new PFrameDriverError(`unsupported PFrame join entry type: ${type}`);
|
|
146
|
+
}
|
|
186
147
|
}
|
|
187
148
|
|
|
188
|
-
|
|
189
|
-
|
|
149
|
+
//#endregion
|
|
150
|
+
export { PTablePool };
|
|
151
|
+
//# sourceMappingURL=ptable_pool.js.map
|
package/dist/ptable_pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptable_pool.js","sources":["../src/ptable_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n PFrameDriverError,\n type PFrameHandle,\n type PTableHandle,\n type JoinEntry,\n type JsonSerializable,\n type PColumnValue,\n type PObjectId,\n} from \"@platforma-sdk/model\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { PFramePool } from \"./pframe_pool\";\nimport {\n FullPTableDefV1,\n FullPTableDefV2,\n stableKeyFromFullPTableDef,\n type FullPTableDef,\n} from \"./ptable_shared\";\nimport type { PTableDefPool } from \"./ptable_def_pool\";\n\nexport class PTableHolder implements Disposable {\n private readonly abortController = new AbortController();\n private readonly combinedDisposeSignal: AbortSignal;\n\n constructor(\n public readonly pFrame: PFrameHandle,\n pFrameDisposeSignal: AbortSignal,\n public readonly pTablePromise: Promise<PFrameInternal.PTableV8>,\n private readonly predecessor?: PoolEntry<PTableHandle, PTableHolder>,\n ) {\n this.combinedDisposeSignal = AbortSignal.any([\n pFrameDisposeSignal,\n this.abortController.signal,\n ]);\n }\n\n public get disposeSignal(): AbortSignal {\n return this.combinedDisposeSignal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n this.predecessor?.unref();\n void this.pTablePromise\n .then((pTable) => pTable.dispose())\n .catch(() => {\n /* mute error */\n });\n }\n}\n\nexport class PTablePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<\n FullPTableDef,\n PTableHandle,\n PTableHolder\n> {\n constructor(\n private readonly pFrames: PFramePool<TreeEntry>,\n private readonly pTableDefs: PTableDefPool,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableHolder {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `PTable creation (pTableHandle = ${key}): ` + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n\n switch (params.type) {\n case \"v1\":\n return this.createNewResourceV1(params, key);\n case \"v2\":\n return this.createNewResourceV2(params, key);\n default:\n // @ts-expect-error `params.type` is a string, but we want to make sure all cases are handled\n throw new PFrameDriverError(`Unsupported FullPTableDef type: ${params.type}`);\n }\n }\n\n protected createNewResourceV1(params: FullPTableDefV1, key: PTableHandle): PTableHolder {\n const { def, pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n // 3. Sort\n if (def.sorting.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n sorting: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const sortedTable = pTablePromise.then((pTable) => pTable.sort(key, def.sorting));\n return new PTableHolder(pFrameHandle, combinedSignal, sortedTable, predecessor);\n }\n\n // 2. Filter (except the case with artificial columns where cartesian creates too many rows)\n if (!hasArtificialColumns(def.src) && def.filters.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n filters: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const filteredTable = pTablePromise.then((pTable) => pTable.filter(key, def.filters));\n return new PTableHolder(pFrameHandle, combinedSignal, filteredTable, predecessor);\n }\n\n // 1. Join\n const table = pFramePromise.then((pFrame) =>\n pFrame.createTable(key, {\n src: joinEntryToInternal(def.src),\n // `def.filters` would be non-empty only when join has artificial columns\n filters: [...def.partitionFilters, ...def.filters],\n }),\n );\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n protected createNewResourceV2(params: FullPTableDefV2, key: PTableHandle): PTableHolder {\n const { pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n const table = pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def));\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n public getByKey(key: PTableHandle): PTableHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction hasArtificialColumns<T>(entry: JoinEntry<T>): boolean {\n switch (entry.type) {\n case \"column\":\n case \"slicedColumn\":\n case \"inlineColumn\":\n return false;\n case \"artificialColumn\":\n return true;\n case \"full\":\n case \"inner\":\n return entry.entries.some(hasArtificialColumns);\n case \"outer\":\n return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);\n default:\n assertNever(entry);\n }\n}\n\nfunction joinEntryToInternal(entry: JoinEntry<PObjectId>): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case \"column\":\n return {\n type: \"column\",\n columnId: entry.column,\n };\n case \"slicedColumn\":\n return {\n type: \"slicedColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axisFilters: entry.axisFilters,\n };\n case \"artificialColumn\":\n return {\n type: \"artificialColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axesIndices: entry.axesIndices,\n };\n case \"inlineColumn\":\n return {\n type: \"inlineColumn\",\n newId: entry.column.id,\n spec: entry.column.spec,\n dataInfo: {\n type: \"Json\",\n keyLength: entry.column.spec.axesSpec.length,\n data: entry.column.data.reduce(\n (acc, row) => {\n acc[JSON.stringify(row.key)] = row.val;\n return acc;\n },\n {} as Record<string, PColumnValue>,\n ),\n },\n };\n case \"inner\":\n case \"full\":\n return {\n type: entry.type,\n entries: entry.entries.map((col) => joinEntryToInternal(col)),\n };\n case \"outer\":\n return {\n type: \"outer\",\n primary: joinEntryToInternal(entry.primary),\n secondary: entry.secondary.map((col) => joinEntryToInternal(col)),\n };\n default:\n throw new PFrameDriverError(`unsupported PFrame join entry type: ${type satisfies never}`);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ptable_pool.js","names":[],"sources":["../src/ptable_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n PFrameDriverError,\n type PFrameHandle,\n type PTableHandle,\n type JoinEntry,\n type JsonSerializable,\n type PColumnValue,\n type PObjectId,\n} from \"@platforma-sdk/model\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { PFramePool } from \"./pframe_pool\";\nimport {\n FullPTableDefV1,\n FullPTableDefV2,\n stableKeyFromFullPTableDef,\n type FullPTableDef,\n} from \"./ptable_shared\";\nimport type { PTableDefPool } from \"./ptable_def_pool\";\n\nexport class PTableHolder implements Disposable {\n private readonly abortController = new AbortController();\n private readonly combinedDisposeSignal: AbortSignal;\n\n constructor(\n public readonly pFrame: PFrameHandle,\n pFrameDisposeSignal: AbortSignal,\n public readonly pTablePromise: Promise<PFrameInternal.PTableV8>,\n private readonly predecessor?: PoolEntry<PTableHandle, PTableHolder>,\n ) {\n this.combinedDisposeSignal = AbortSignal.any([\n pFrameDisposeSignal,\n this.abortController.signal,\n ]);\n }\n\n public get disposeSignal(): AbortSignal {\n return this.combinedDisposeSignal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n this.predecessor?.unref();\n void this.pTablePromise\n .then((pTable) => pTable.dispose())\n .catch(() => {\n /* mute error */\n });\n }\n}\n\nexport class PTablePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<\n FullPTableDef,\n PTableHandle,\n PTableHolder\n> {\n constructor(\n private readonly pFrames: PFramePool<TreeEntry>,\n private readonly pTableDefs: PTableDefPool,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableHolder {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `PTable creation (pTableHandle = ${key}): ` + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n\n switch (params.type) {\n case \"v1\":\n return this.createNewResourceV1(params, key);\n case \"v2\":\n return this.createNewResourceV2(params, key);\n default:\n // @ts-expect-error `params.type` is a string, but we want to make sure all cases are handled\n throw new PFrameDriverError(`Unsupported FullPTableDef type: ${params.type}`);\n }\n }\n\n protected createNewResourceV1(params: FullPTableDefV1, key: PTableHandle): PTableHolder {\n const { def, pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n // 3. Sort\n if (def.sorting.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n sorting: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const sortedTable = pTablePromise.then((pTable) => pTable.sort(key, def.sorting));\n return new PTableHolder(pFrameHandle, combinedSignal, sortedTable, predecessor);\n }\n\n // 2. Filter (except the case with artificial columns where cartesian creates too many rows)\n if (!hasArtificialColumns(def.src) && def.filters.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...def,\n filters: [],\n },\n });\n const {\n resource: { pTablePromise },\n } = predecessor;\n const filteredTable = pTablePromise.then((pTable) => pTable.filter(key, def.filters));\n return new PTableHolder(pFrameHandle, combinedSignal, filteredTable, predecessor);\n }\n\n // 1. Join\n const table = pFramePromise.then((pFrame) =>\n pFrame.createTable(key, {\n src: joinEntryToInternal(def.src),\n // `def.filters` would be non-empty only when join has artificial columns\n filters: [...def.partitionFilters, ...def.filters],\n }),\n );\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n protected createNewResourceV2(params: FullPTableDefV2, key: PTableHandle): PTableHolder {\n const { pFrameHandle } = params;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(pFrameHandle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n const table = pFramePromise.then((pFrame) => pFrame.createTableV2(key, params.def));\n return new PTableHolder(pFrameHandle, combinedSignal, table);\n }\n\n public getByKey(key: PTableHandle): PTableHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction hasArtificialColumns<T>(entry: JoinEntry<T>): boolean {\n switch (entry.type) {\n case \"column\":\n case \"slicedColumn\":\n case \"inlineColumn\":\n return false;\n case \"artificialColumn\":\n return true;\n case \"full\":\n case \"inner\":\n return entry.entries.some(hasArtificialColumns);\n case \"outer\":\n return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);\n default:\n assertNever(entry);\n }\n}\n\nfunction joinEntryToInternal(entry: JoinEntry<PObjectId>): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case \"column\":\n return {\n type: \"column\",\n columnId: entry.column,\n };\n case \"slicedColumn\":\n return {\n type: \"slicedColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axisFilters: entry.axisFilters,\n };\n case \"artificialColumn\":\n return {\n type: \"artificialColumn\",\n columnId: entry.column,\n newId: entry.newId,\n axesIndices: entry.axesIndices,\n };\n case \"inlineColumn\":\n return {\n type: \"inlineColumn\",\n newId: entry.column.id,\n spec: entry.column.spec,\n dataInfo: {\n type: \"Json\",\n keyLength: entry.column.spec.axesSpec.length,\n data: entry.column.data.reduce(\n (acc, row) => {\n acc[JSON.stringify(row.key)] = row.val;\n return acc;\n },\n {} as Record<string, PColumnValue>,\n ),\n },\n };\n case \"inner\":\n case \"full\":\n return {\n type: entry.type,\n entries: entry.entries.map((col) => joinEntryToInternal(col)),\n };\n case \"outer\":\n return {\n type: \"outer\",\n primary: joinEntryToInternal(entry.primary),\n secondary: entry.secondary.map((col) => joinEntryToInternal(col)),\n };\n default:\n throw new PFrameDriverError(`unsupported PFrame join entry type: ${type satisfies never}`);\n }\n}\n"],"mappings":";;;;;;AAuBA,IAAa,eAAb,MAAgD;CAC9C,AAAiB,kBAAkB,IAAI,iBAAiB;CACxD,AAAiB;CAEjB,YACE,AAAgB,QAChB,qBACA,AAAgB,eAChB,AAAiB,aACjB;EAJgB;EAEA;EACC;AAEjB,OAAK,wBAAwB,YAAY,IAAI,CAC3C,qBACA,KAAK,gBAAgB,OACtB,CAAC;;CAGJ,IAAW,gBAA6B;AACtC,SAAO,KAAK;;CAGd,CAAC,OAAO,WAAiB;AACvB,OAAK,gBAAgB,OAAO;AAC5B,OAAK,aAAa,OAAO;AACzB,EAAK,KAAK,cACP,MAAM,WAAW,OAAO,SAAS,CAAC,CAClC,YAAY,GAEX;;;AAIR,IAAa,aAAb,cAAoE,iBAIlE;CACA,YACE,AAAiB,SACjB,AAAiB,YACjB,AAAiB,QACjB;AACA,SAAO;EAJU;EACA;EACA;;CAKnB,AAAU,mBAAmB,QAAqC;AAChE,SAAO,2BAA2B,OAAO;;CAG3C,AAAU,kBAAkB,QAAuB,KAAiC;AAClF,MAAI,YAAY,CACd,MAAK,OACH,QACA,mCAAmC,IAAI,KAAU,KAAK,UAAU,QAAQ,eAAe,GACxF;AAGH,UAAQ,OAAO,MAAf;GACE,KAAK,KACH,QAAO,KAAK,oBAAoB,QAAQ,IAAI;GAC9C,KAAK,KACH,QAAO,KAAK,oBAAoB,QAAQ,IAAI;GAC9C,QAEE,OAAM,IAAI,kBAAkB,mCAAmC,OAAO,OAAO;;;CAInF,AAAU,oBAAoB,QAAyB,KAAiC;EACtF,MAAM,EAAE,KAAK,iBAAiB;EAC9B,MAAM,EAAE,eAAe,kBAAkB,KAAK,QAAQ,SAAS,aAAa;EAE5E,MAAM,mBAAmB,KAAK,WAAW,YAAY,IAAI,EAAE;EAC3D,MAAM,iBAAiB,YAAY,IAAI,CAAC,eAAe,iBAAiB,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC;AAG5F,MAAI,IAAI,QAAQ,SAAS,GAAG;GAC1B,MAAM,cAAc,KAAK,QAAQ;IAC/B,GAAG;IACH,KAAK;KACH,GAAG;KACH,SAAS,EAAE;KACZ;IACF,CAAC;GACF,MAAM,EACJ,UAAU,EAAE,oBACV;AAEJ,UAAO,IAAI,aAAa,cAAc,gBADlB,cAAc,MAAM,WAAW,OAAO,KAAK,KAAK,IAAI,QAAQ,CAAC,EACd,YAAY;;AAIjF,MAAI,CAAC,qBAAqB,IAAI,IAAI,IAAI,IAAI,QAAQ,SAAS,GAAG;GAC5D,MAAM,cAAc,KAAK,QAAQ;IAC/B,GAAG;IACH,KAAK;KACH,GAAG;KACH,SAAS,EAAE;KACZ;IACF,CAAC;GACF,MAAM,EACJ,UAAU,EAAE,oBACV;AAEJ,UAAO,IAAI,aAAa,cAAc,gBADhB,cAAc,MAAM,WAAW,OAAO,OAAO,KAAK,IAAI,QAAQ,CAAC,EAChB,YAAY;;AAWnF,SAAO,IAAI,aAAa,cAAc,gBAPxB,cAAc,MAAM,WAChC,OAAO,YAAY,KAAK;GACtB,KAAK,oBAAoB,IAAI,IAAI;GAEjC,SAAS,CAAC,GAAG,IAAI,kBAAkB,GAAG,IAAI,QAAQ;GACnD,CAAC,CACH,CAC2D;;CAG9D,AAAU,oBAAoB,QAAyB,KAAiC;EACtF,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,eAAe,kBAAkB,KAAK,QAAQ,SAAS,aAAa;EAE5E,MAAM,mBAAmB,KAAK,WAAW,YAAY,IAAI,EAAE;AAI3D,SAAO,IAAI,aAAa,cAHD,YAAY,IAAI,CAAC,eAAe,iBAAiB,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,EAE9E,cAAc,MAAM,WAAW,OAAO,cAAc,KAAK,OAAO,IAAI,CAAC,CACvB;;CAG9D,AAAO,SAAS,KAAiC;EAC/C,MAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,CAAC,UAAU;GACb,MAAM,QAAQ,IAAI,kBAAkB,wBAAwB;AAC5D,SAAM,wBAAQ,IAAI,MAAM,sBAAsB,IAAI,YAAY;AAC9D,SAAM;;AAER,SAAO;;;AAIX,SAAS,qBAAwB,OAA8B;AAC7D,SAAQ,MAAM,MAAd;EACE,KAAK;EACL,KAAK;EACL,KAAK,eACH,QAAO;EACT,KAAK,mBACH,QAAO;EACT,KAAK;EACL,KAAK,QACH,QAAO,MAAM,QAAQ,KAAK,qBAAqB;EACjD,KAAK,QACH,QAAO,qBAAqB,MAAM,QAAQ,IAAI,MAAM,UAAU,KAAK,qBAAqB;EAC1F,QACE,aAAY,MAAM;;;AAIxB,SAAS,oBAAoB,OAAyD;CACpF,MAAM,OAAO,MAAM;AACnB,SAAQ,MAAR;EACE,KAAK,SACH,QAAO;GACL,MAAM;GACN,UAAU,MAAM;GACjB;EACH,KAAK,eACH,QAAO;GACL,MAAM;GACN,UAAU,MAAM;GAChB,OAAO,MAAM;GACb,aAAa,MAAM;GACpB;EACH,KAAK,mBACH,QAAO;GACL,MAAM;GACN,UAAU,MAAM;GAChB,OAAO,MAAM;GACb,aAAa,MAAM;GACpB;EACH,KAAK,eACH,QAAO;GACL,MAAM;GACN,OAAO,MAAM,OAAO;GACpB,MAAM,MAAM,OAAO;GACnB,UAAU;IACR,MAAM;IACN,WAAW,MAAM,OAAO,KAAK,SAAS;IACtC,MAAM,MAAM,OAAO,KAAK,QACrB,KAAK,QAAQ;AACZ,SAAI,KAAK,UAAU,IAAI,IAAI,IAAI,IAAI;AACnC,YAAO;OAET,EAAE,CACH;IACF;GACF;EACH,KAAK;EACL,KAAK,OACH,QAAO;GACL,MAAM,MAAM;GACZ,SAAS,MAAM,QAAQ,KAAK,QAAQ,oBAAoB,IAAI,CAAC;GAC9D;EACH,KAAK,QACH,QAAO;GACL,MAAM;GACN,SAAS,oBAAoB,MAAM,QAAQ;GAC3C,WAAW,MAAM,UAAU,KAAK,QAAQ,oBAAoB,IAAI,CAAC;GAClE;EACH,QACE,OAAM,IAAI,kBAAkB,uCAAuC,OAAuB"}
|
package/dist/ptable_shared.cjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var plModelMiddleLayer = require('@milaboratories/pl-model-middle-layer');
|
|
1
|
+
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let _milaboratories_pl_model_middle_layer = require("@milaboratories/pl-model-middle-layer");
|
|
4
3
|
|
|
4
|
+
//#region src/ptable_shared.ts
|
|
5
5
|
function stableKeyFromFullPTableDef(data) {
|
|
6
|
-
|
|
6
|
+
return (0, _milaboratories_pl_model_middle_layer.hashJson)(data);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
//#endregion
|
|
9
10
|
exports.stableKeyFromFullPTableDef = stableKeyFromFullPTableDef;
|
|
10
|
-
//# sourceMappingURL=ptable_shared.cjs.map
|
|
11
|
+
//# sourceMappingURL=ptable_shared.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptable_shared.cjs","sources":["../src/ptable_shared.ts"],"sourcesContent":["import type {\n PObjectId,\n PFrameHandle,\n PTableDef,\n PTableHandle,\n DataQuery,\n PTableColumnSpec,\n} from \"@platforma-sdk/model\";\nimport { hashJson } from \"@milaboratories/pl-model-middle-layer\";\n\nexport type FullPTableDefV1 = {\n type: \"v1\";\n pFrameHandle: PFrameHandle;\n def: PTableDef<PObjectId>;\n};\n\nexport type FullPTableDefV2 = {\n type: \"v2\";\n pFrameHandle: PFrameHandle;\n def: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n };\n};\n\nexport type FullPTableDef = FullPTableDefV1 | FullPTableDefV2;\n\nexport function stableKeyFromFullPTableDef(data: FullPTableDef): PTableHandle {\n return hashJson(data) as string as PTableHandle;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"ptable_shared.cjs","names":[],"sources":["../src/ptable_shared.ts"],"sourcesContent":["import type {\n PObjectId,\n PFrameHandle,\n PTableDef,\n PTableHandle,\n DataQuery,\n PTableColumnSpec,\n} from \"@platforma-sdk/model\";\nimport { hashJson } from \"@milaboratories/pl-model-middle-layer\";\n\nexport type FullPTableDefV1 = {\n type: \"v1\";\n pFrameHandle: PFrameHandle;\n def: PTableDef<PObjectId>;\n};\n\nexport type FullPTableDefV2 = {\n type: \"v2\";\n pFrameHandle: PFrameHandle;\n def: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n };\n};\n\nexport type FullPTableDef = FullPTableDefV1 | FullPTableDefV2;\n\nexport function stableKeyFromFullPTableDef(data: FullPTableDef): PTableHandle {\n return hashJson(data) as string as PTableHandle;\n}\n"],"mappings":";;;;AA2BA,SAAgB,2BAA2B,MAAmC;AAC5E,4DAAgB,KAAK"}
|
package/dist/ptable_shared.d.ts
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export type FullPTableDefV1 = {
|
|
3
|
-
type: "v1";
|
|
4
|
-
pFrameHandle: PFrameHandle;
|
|
5
|
-
def: PTableDef<PObjectId>;
|
|
6
|
-
};
|
|
7
|
-
export type FullPTableDefV2 = {
|
|
8
|
-
type: "v2";
|
|
9
|
-
pFrameHandle: PFrameHandle;
|
|
10
|
-
def: {
|
|
11
|
-
tableSpec: PTableColumnSpec[];
|
|
12
|
-
dataQuery: DataQuery;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
export type FullPTableDef = FullPTableDefV1 | FullPTableDefV2;
|
|
16
|
-
export declare function stableKeyFromFullPTableDef(data: FullPTableDef): PTableHandle;
|
|
17
|
-
//# sourceMappingURL=ptable_shared.d.ts.map
|
|
1
|
+
import { PFrameHandle, PObjectId, PTableColumnSpec, PTableDef, PTableHandle } from "@platforma-sdk/model";
|
package/dist/ptable_shared.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { hashJson } from
|
|
1
|
+
import { hashJson } from "@milaboratories/pl-model-middle-layer";
|
|
2
2
|
|
|
3
|
+
//#region src/ptable_shared.ts
|
|
3
4
|
function stableKeyFromFullPTableDef(data) {
|
|
4
|
-
|
|
5
|
+
return hashJson(data);
|
|
5
6
|
}
|
|
6
7
|
|
|
8
|
+
//#endregion
|
|
7
9
|
export { stableKeyFromFullPTableDef };
|
|
8
|
-
//# sourceMappingURL=ptable_shared.js.map
|
|
10
|
+
//# sourceMappingURL=ptable_shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptable_shared.js","sources":["../src/ptable_shared.ts"],"sourcesContent":["import type {\n PObjectId,\n PFrameHandle,\n PTableDef,\n PTableHandle,\n DataQuery,\n PTableColumnSpec,\n} from \"@platforma-sdk/model\";\nimport { hashJson } from \"@milaboratories/pl-model-middle-layer\";\n\nexport type FullPTableDefV1 = {\n type: \"v1\";\n pFrameHandle: PFrameHandle;\n def: PTableDef<PObjectId>;\n};\n\nexport type FullPTableDefV2 = {\n type: \"v2\";\n pFrameHandle: PFrameHandle;\n def: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n };\n};\n\nexport type FullPTableDef = FullPTableDefV1 | FullPTableDefV2;\n\nexport function stableKeyFromFullPTableDef(data: FullPTableDef): PTableHandle {\n return hashJson(data) as string as PTableHandle;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"ptable_shared.js","names":[],"sources":["../src/ptable_shared.ts"],"sourcesContent":["import type {\n PObjectId,\n PFrameHandle,\n PTableDef,\n PTableHandle,\n DataQuery,\n PTableColumnSpec,\n} from \"@platforma-sdk/model\";\nimport { hashJson } from \"@milaboratories/pl-model-middle-layer\";\n\nexport type FullPTableDefV1 = {\n type: \"v1\";\n pFrameHandle: PFrameHandle;\n def: PTableDef<PObjectId>;\n};\n\nexport type FullPTableDefV2 = {\n type: \"v2\";\n pFrameHandle: PFrameHandle;\n def: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n };\n};\n\nexport type FullPTableDef = FullPTableDefV1 | FullPTableDefV2;\n\nexport function stableKeyFromFullPTableDef(data: FullPTableDef): PTableHandle {\n return hashJson(data) as string as PTableHandle;\n}\n"],"mappings":";;;AA2BA,SAAgB,2BAA2B,MAAmC;AAC5E,QAAO,SAAS,KAAK"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pf-driver",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.62",
|
|
4
4
|
"description": "PFrameDriver implementation abstracted from Middle Layer",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -24,16 +24,16 @@
|
|
|
24
24
|
"@milaboratories/pframes-rs-wasm": "1.1.10",
|
|
25
25
|
"es-toolkit": "^1.39.10",
|
|
26
26
|
"lru-cache": "^11.2.2",
|
|
27
|
-
"@milaboratories/pl-model-middle-layer": "1.12.
|
|
27
|
+
"@milaboratories/pl-model-middle-layer": "1.12.9",
|
|
28
28
|
"@milaboratories/ts-helpers": "1.7.2",
|
|
29
|
-
"@platforma-sdk/model": "1.58.
|
|
29
|
+
"@platforma-sdk/model": "1.58.9"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "~24.5.2",
|
|
33
33
|
"@vitest/coverage-istanbul": "^4.0.18",
|
|
34
|
-
"typescript": "~5.
|
|
34
|
+
"typescript": "~5.9.3",
|
|
35
35
|
"vitest": "^4.0.18",
|
|
36
|
-
"@milaboratories/ts-builder": "1.2.
|
|
36
|
+
"@milaboratories/ts-builder": "1.2.12",
|
|
37
37
|
"@milaboratories/build-configs": "1.5.0",
|
|
38
38
|
"@milaboratories/ts-configs": "1.2.1"
|
|
39
39
|
},
|