@milaboratories/pf-driver 1.3.2 → 1.3.4

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.
Files changed (67) hide show
  1. package/dist/_virtual/{_@oxc-project_runtime@0.114.0 → _@oxc-project_runtime@0.123.0}/helpers/usingCtx.cjs +2 -4
  2. package/dist/_virtual/{_@oxc-project_runtime@0.114.0 → _@oxc-project_runtime@0.123.0}/helpers/usingCtx.js +2 -3
  3. package/dist/_virtual/_rolldown/runtime.cjs +7 -13
  4. package/dist/data_info_helpers.cjs +2 -3
  5. package/dist/data_info_helpers.cjs.map +1 -1
  6. package/dist/data_info_helpers.d.ts.map +1 -0
  7. package/dist/data_info_helpers.js +1 -2
  8. package/dist/data_info_helpers.js.map +1 -1
  9. package/dist/driver_decl.d.ts +1 -1
  10. package/dist/driver_decl.d.ts.map +1 -0
  11. package/dist/driver_double.cjs +6 -7
  12. package/dist/driver_double.cjs.map +1 -1
  13. package/dist/driver_double.d.ts.map +1 -0
  14. package/dist/driver_double.js +2 -3
  15. package/dist/driver_double.js.map +1 -1
  16. package/dist/driver_impl.cjs +15 -15
  17. package/dist/driver_impl.cjs.map +1 -1
  18. package/dist/driver_impl.d.ts +1 -1
  19. package/dist/driver_impl.d.ts.map +1 -0
  20. package/dist/driver_impl.js +4 -4
  21. package/dist/driver_impl.js.map +1 -1
  22. package/dist/index.cjs +5 -6
  23. package/dist/index.js +1 -2
  24. package/dist/logging.cjs +1 -2
  25. package/dist/logging.cjs.map +1 -1
  26. package/dist/logging.js +1 -1
  27. package/dist/pframe_pool.cjs +5 -6
  28. package/dist/pframe_pool.cjs.map +1 -1
  29. package/dist/pframe_pool.d.ts +1 -1
  30. package/dist/pframe_pool.d.ts.map +1 -0
  31. package/dist/pframe_pool.js +2 -3
  32. package/dist/pframe_pool.js.map +1 -1
  33. package/dist/ptable_cache_per_frame.cjs +3 -4
  34. package/dist/ptable_cache_per_frame.cjs.map +1 -1
  35. package/dist/ptable_cache_per_frame.d.ts +1 -2
  36. package/dist/ptable_cache_per_frame.d.ts.map +1 -0
  37. package/dist/ptable_cache_per_frame.js +1 -2
  38. package/dist/ptable_cache_per_frame.js.map +1 -1
  39. package/dist/ptable_cache_plain.cjs +3 -4
  40. package/dist/ptable_cache_plain.cjs.map +1 -1
  41. package/dist/ptable_cache_plain.d.ts +1 -2
  42. package/dist/ptable_cache_plain.d.ts.map +1 -0
  43. package/dist/ptable_cache_plain.js +1 -2
  44. package/dist/ptable_cache_plain.js.map +1 -1
  45. package/dist/ptable_def_pool.cjs +6 -7
  46. package/dist/ptable_def_pool.cjs.map +1 -1
  47. package/dist/ptable_def_pool.d.ts +1 -2
  48. package/dist/ptable_def_pool.js +2 -3
  49. package/dist/ptable_def_pool.js.map +1 -1
  50. package/dist/ptable_pool.cjs +6 -7
  51. package/dist/ptable_pool.cjs.map +1 -1
  52. package/dist/ptable_pool.d.ts +1 -4
  53. package/dist/ptable_pool.js +2 -3
  54. package/dist/ptable_pool.js.map +1 -1
  55. package/dist/ptable_shared.cjs +2 -3
  56. package/dist/ptable_shared.cjs.map +1 -1
  57. package/dist/ptable_shared.js +1 -2
  58. package/dist/ptable_shared.js.map +1 -1
  59. package/package.json +12 -11
  60. package/src/driver_decl.ts +1 -1
  61. package/src/driver_double.ts +1 -1
  62. package/src/driver_impl.ts +2 -5
  63. package/src/pframe_pool.ts +1 -1
  64. package/src/ptable_cache_per_frame.ts +1 -1
  65. package/src/ptable_cache_plain.ts +1 -1
  66. package/src/ptable_def_pool.ts +1 -1
  67. package/src/ptable_pool.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ptable_def_pool.cjs","names":["logPFrames","RefCountPoolBase","stableKeyFromFullPTableDef","PFrameDriverError"],"sources":["../src/ptable_def_pool.ts"],"sourcesContent":["import { PFrameDriverError, type PTableHandle } from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { FullPTableDef } from \"./ptable_shared\";\nimport { stableKeyFromFullPTableDef } from \"./ptable_shared\";\n\nexport class PTableDefHolder implements Disposable {\n private readonly abortController = new AbortController();\n\n constructor(\n public readonly def: FullPTableDef,\n private readonly pTableHandle: PTableHandle,\n private readonly logger: PFrameInternal.Logger,\n ) {\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition saved (pTableHandle = ${this.pTableHandle})`);\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition disposed (pTableHandle = ${this.pTableHandle})`);\n }\n }\n}\n\nexport class PTableDefPool extends RefCountPoolBase<FullPTableDef, PTableHandle, PTableDefHolder> {\n constructor(private readonly logger: PFrameInternal.Logger) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableDefHolder {\n return new PTableDefHolder(params, key, this.logger);\n }\n\n public getByKey(key: PTableHandle): PTableDefHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable definition for handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n"],"mappings":";;;;;;;AAOA,IAAa,kBAAb,MAAmD;CACjD,AAAiB,kBAAkB,IAAI,iBAAiB;CAExD,YACE,AAAgB,KAChB,AAAiB,cACjB,AAAiB,QACjB;EAHgB;EACC;EACA;AAEjB,MAAIA,4BAAY,CACd,MAAK,OAAO,QAAQ,2CAA2C,KAAK,aAAa,GAAG;;CAIxF,IAAW,gBAA6B;AACtC,SAAO,KAAK,gBAAgB;;CAG9B,CAAC,OAAO,WAAiB;AACvB,OAAK,gBAAgB,OAAO;AAC5B,MAAIA,4BAAY,CACd,MAAK,OAAO,QAAQ,8CAA8C,KAAK,aAAa,GAAG;;;AAK7F,IAAa,gBAAb,cAAmCC,4CAA+D;CAChG,YAAY,AAAiB,QAA+B;AAC1D,SAAO;EADoB;;CAI7B,AAAU,mBAAmB,QAAqC;AAChE,SAAOC,iDAA2B,OAAO;;CAG3C,AAAU,kBAAkB,QAAuB,KAAoC;AACrF,SAAO,IAAI,gBAAgB,QAAQ,KAAK,KAAK,OAAO;;CAGtD,AAAO,SAAS,KAAoC;EAClD,MAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,CAAC,UAAU;GACb,MAAM,QAAQ,IAAIC,kDAAkB,wBAAwB;AAC5D,SAAM,wBAAQ,IAAI,MAAM,gCAAgC,IAAI,YAAY;AACxE,SAAM;;AAER,SAAO"}
1
+ {"version":3,"file":"ptable_def_pool.cjs","names":["logPFrames","RefCountPoolBase","stableKeyFromFullPTableDef","PFrameDriverError"],"sources":["../src/ptable_def_pool.ts"],"sourcesContent":["import { PFrameDriverError, type PTableHandle } from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase } from \"@milaboratories/helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { FullPTableDef } from \"./ptable_shared\";\nimport { stableKeyFromFullPTableDef } from \"./ptable_shared\";\n\nexport class PTableDefHolder implements Disposable {\n private readonly abortController = new AbortController();\n\n constructor(\n public readonly def: FullPTableDef,\n private readonly pTableHandle: PTableHandle,\n private readonly logger: PFrameInternal.Logger,\n ) {\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition saved (pTableHandle = ${this.pTableHandle})`);\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition disposed (pTableHandle = ${this.pTableHandle})`);\n }\n }\n}\n\nexport class PTableDefPool extends RefCountPoolBase<FullPTableDef, PTableHandle, PTableDefHolder> {\n constructor(private readonly logger: PFrameInternal.Logger) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableDefHolder {\n return new PTableDefHolder(params, key, this.logger);\n }\n\n public getByKey(key: PTableHandle): PTableDefHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable definition for handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,kBAAb,MAAmD;CACjD,kBAAmC,IAAI,iBAAiB;CAExD,YACE,KACA,cACA,QACA;AAHgB,OAAA,MAAA;AACC,OAAA,eAAA;AACA,OAAA,SAAA;AAEjB,MAAIA,gBAAAA,YAAY,CACd,MAAK,OAAO,QAAQ,2CAA2C,KAAK,aAAa,GAAG;;CAIxF,IAAW,gBAA6B;AACtC,SAAO,KAAK,gBAAgB;;CAG9B,CAAC,OAAO,WAAiB;AACvB,OAAK,gBAAgB,OAAO;AAC5B,MAAIA,gBAAAA,YAAY,CACd,MAAK,OAAO,QAAQ,8CAA8C,KAAK,aAAa,GAAG;;;AAK7F,IAAa,gBAAb,cAAmCC,wBAAAA,iBAA+D;CAChG,YAAY,QAAgD;AAC1D,SAAO;AADoB,OAAA,SAAA;;CAI7B,mBAA6B,QAAqC;AAChE,SAAOC,sBAAAA,2BAA2B,OAAO;;CAG3C,kBAA4B,QAAuB,KAAoC;AACrF,SAAO,IAAI,gBAAgB,QAAQ,KAAK,KAAK,OAAO;;CAGtD,SAAgB,KAAoC;EAClD,MAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,CAAC,UAAU;GACb,MAAM,QAAQ,IAAIC,gCAAAA,kBAAkB,wBAAwB;AAC5D,SAAM,wBAAQ,IAAI,MAAM,gCAAgC,IAAI,YAAY;AACxE,SAAM;;AAER,SAAO"}
@@ -1,4 +1,3 @@
1
- import "./ptable_shared.js";
2
1
  import { PTableHandle } from "@milaboratories/pl-model-common";
3
- import { RefCountPoolBase } from "@milaboratories/ts-helpers";
2
+ import { RefCountPoolBase } from "@milaboratories/helpers";
4
3
  import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
@@ -1,8 +1,7 @@
1
1
  import { logPFrames } from "./logging.js";
2
2
  import { stableKeyFromFullPTableDef } from "./ptable_shared.js";
3
3
  import { PFrameDriverError } from "@milaboratories/pl-model-common";
4
- import { RefCountPoolBase } from "@milaboratories/ts-helpers";
5
-
4
+ import { RefCountPoolBase } from "@milaboratories/helpers";
6
5
  //#region src/ptable_def_pool.ts
7
6
  var PTableDefHolder = class {
8
7
  abortController = new AbortController();
@@ -41,7 +40,7 @@ var PTableDefPool = class extends RefCountPoolBase {
41
40
  return resource;
42
41
  }
43
42
  };
44
-
45
43
  //#endregion
46
44
  export { PTableDefPool };
45
+
47
46
  //# sourceMappingURL=ptable_def_pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ptable_def_pool.js","names":[],"sources":["../src/ptable_def_pool.ts"],"sourcesContent":["import { PFrameDriverError, type PTableHandle } from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase } from \"@milaboratories/ts-helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { FullPTableDef } from \"./ptable_shared\";\nimport { stableKeyFromFullPTableDef } from \"./ptable_shared\";\n\nexport class PTableDefHolder implements Disposable {\n private readonly abortController = new AbortController();\n\n constructor(\n public readonly def: FullPTableDef,\n private readonly pTableHandle: PTableHandle,\n private readonly logger: PFrameInternal.Logger,\n ) {\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition saved (pTableHandle = ${this.pTableHandle})`);\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition disposed (pTableHandle = ${this.pTableHandle})`);\n }\n }\n}\n\nexport class PTableDefPool extends RefCountPoolBase<FullPTableDef, PTableHandle, PTableDefHolder> {\n constructor(private readonly logger: PFrameInternal.Logger) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableDefHolder {\n return new PTableDefHolder(params, key, this.logger);\n }\n\n public getByKey(key: PTableHandle): PTableDefHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable definition for handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,kBAAb,MAAmD;CACjD,AAAiB,kBAAkB,IAAI,iBAAiB;CAExD,YACE,AAAgB,KAChB,AAAiB,cACjB,AAAiB,QACjB;EAHgB;EACC;EACA;AAEjB,MAAI,YAAY,CACd,MAAK,OAAO,QAAQ,2CAA2C,KAAK,aAAa,GAAG;;CAIxF,IAAW,gBAA6B;AACtC,SAAO,KAAK,gBAAgB;;CAG9B,CAAC,OAAO,WAAiB;AACvB,OAAK,gBAAgB,OAAO;AAC5B,MAAI,YAAY,CACd,MAAK,OAAO,QAAQ,8CAA8C,KAAK,aAAa,GAAG;;;AAK7F,IAAa,gBAAb,cAAmC,iBAA+D;CAChG,YAAY,AAAiB,QAA+B;AAC1D,SAAO;EADoB;;CAI7B,AAAU,mBAAmB,QAAqC;AAChE,SAAO,2BAA2B,OAAO;;CAG3C,AAAU,kBAAkB,QAAuB,KAAoC;AACrF,SAAO,IAAI,gBAAgB,QAAQ,KAAK,KAAK,OAAO;;CAGtD,AAAO,SAAS,KAAoC;EAClD,MAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,CAAC,UAAU;GACb,MAAM,QAAQ,IAAI,kBAAkB,wBAAwB;AAC5D,SAAM,wBAAQ,IAAI,MAAM,gCAAgC,IAAI,YAAY;AACxE,SAAM;;AAER,SAAO"}
1
+ {"version":3,"file":"ptable_def_pool.js","names":[],"sources":["../src/ptable_def_pool.ts"],"sourcesContent":["import { PFrameDriverError, type PTableHandle } from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase } from \"@milaboratories/helpers\";\nimport { logPFrames } from \"./logging\";\nimport type { FullPTableDef } from \"./ptable_shared\";\nimport { stableKeyFromFullPTableDef } from \"./ptable_shared\";\n\nexport class PTableDefHolder implements Disposable {\n private readonly abortController = new AbortController();\n\n constructor(\n public readonly def: FullPTableDef,\n private readonly pTableHandle: PTableHandle,\n private readonly logger: PFrameInternal.Logger,\n ) {\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition saved (pTableHandle = ${this.pTableHandle})`);\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n if (logPFrames()) {\n this.logger(\"info\", `PTable definition disposed (pTableHandle = ${this.pTableHandle})`);\n }\n }\n}\n\nexport class PTableDefPool extends RefCountPoolBase<FullPTableDef, PTableHandle, PTableDefHolder> {\n constructor(private readonly logger: PFrameInternal.Logger) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): PTableHandle {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: PTableHandle): PTableDefHolder {\n return new PTableDefHolder(params, key, this.logger);\n }\n\n public getByKey(key: PTableHandle): PTableDefHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PTable handle`);\n error.cause = new Error(`PTable definition for handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,kBAAb,MAAmD;CACjD,kBAAmC,IAAI,iBAAiB;CAExD,YACE,KACA,cACA,QACA;AAHgB,OAAA,MAAA;AACC,OAAA,eAAA;AACA,OAAA,SAAA;AAEjB,MAAI,YAAY,CACd,MAAK,OAAO,QAAQ,2CAA2C,KAAK,aAAa,GAAG;;CAIxF,IAAW,gBAA6B;AACtC,SAAO,KAAK,gBAAgB;;CAG9B,CAAC,OAAO,WAAiB;AACvB,OAAK,gBAAgB,OAAO;AAC5B,MAAI,YAAY,CACd,MAAK,OAAO,QAAQ,8CAA8C,KAAK,aAAa,GAAG;;;AAK7F,IAAa,gBAAb,cAAmC,iBAA+D;CAChG,YAAY,QAAgD;AAC1D,SAAO;AADoB,OAAA,SAAA;;CAI7B,mBAA6B,QAAqC;AAChE,SAAO,2BAA2B,OAAO;;CAG3C,kBAA4B,QAAuB,KAAoC;AACrF,SAAO,IAAI,gBAAgB,QAAQ,KAAK,KAAK,OAAO;;CAGtD,SAAgB,KAAoC;EAClD,MAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,CAAC,UAAU;GACb,MAAM,QAAQ,IAAI,kBAAkB,wBAAwB;AAC5D,SAAM,wBAAQ,IAAI,MAAM,gCAAgC,IAAI,YAAY;AACxE,SAAM;;AAER,SAAO"}
@@ -1,9 +1,8 @@
1
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
- const require_logging = require('./logging.cjs');
3
- const require_ptable_shared = require('./ptable_shared.cjs');
1
+ require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_logging = require("./logging.cjs");
3
+ const require_ptable_shared = require("./ptable_shared.cjs");
4
4
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
5
- let _milaboratories_ts_helpers = require("@milaboratories/ts-helpers");
6
-
5
+ let _milaboratories_helpers = require("@milaboratories/helpers");
7
6
  //#region src/ptable_pool.ts
8
7
  var PTableHolder = class {
9
8
  abortController = new AbortController();
@@ -23,7 +22,7 @@ var PTableHolder = class {
23
22
  this.pTablePromise.then((pTable) => pTable.dispose()).catch(() => {});
24
23
  }
25
24
  };
26
- var PTablePool = class extends _milaboratories_ts_helpers.RefCountPoolBase {
25
+ var PTablePool = class extends _milaboratories_helpers.RefCountPoolBase {
27
26
  constructor(pFrames, pTableDefs, logger) {
28
27
  super();
29
28
  this.pFrames = pFrames;
@@ -146,7 +145,7 @@ function joinEntryToInternal(entry) {
146
145
  default: throw new _milaboratories_pl_model_common.PFrameDriverError(`unsupported PFrame join entry type: ${type}`);
147
146
  }
148
147
  }
149
-
150
148
  //#endregion
151
149
  exports.PTablePool = PTablePool;
150
+
152
151
  //# sourceMappingURL=ptable_pool.cjs.map
@@ -1 +1 @@
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 \"@milaboratories/pl-model-common\";\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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"}
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 \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/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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"}
@@ -1,6 +1,3 @@
1
- import "./pframe_pool.js";
2
- import "./ptable_shared.js";
3
- import "./ptable_def_pool.js";
4
1
  import { JsonSerializable, PFrameHandle, PTableHandle } from "@milaboratories/pl-model-common";
5
- import { PoolEntry, RefCountPoolBase } from "@milaboratories/ts-helpers";
2
+ import { PoolEntry, RefCountPoolBase } from "@milaboratories/helpers";
6
3
  import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
@@ -1,8 +1,7 @@
1
1
  import { logPFrames } from "./logging.js";
2
2
  import { stableKeyFromFullPTableDef } from "./ptable_shared.js";
3
3
  import { PFrameDriverError, assertNever, bigintReplacer } from "@milaboratories/pl-model-common";
4
- import { RefCountPoolBase } from "@milaboratories/ts-helpers";
5
-
4
+ import { RefCountPoolBase } from "@milaboratories/helpers";
6
5
  //#region src/ptable_pool.ts
7
6
  var PTableHolder = class {
8
7
  abortController = new AbortController();
@@ -145,7 +144,7 @@ function joinEntryToInternal(entry) {
145
144
  default: throw new PFrameDriverError(`unsupported PFrame join entry type: ${type}`);
146
145
  }
147
146
  }
148
-
149
147
  //#endregion
150
148
  export { PTablePool };
149
+
151
150
  //# sourceMappingURL=ptable_pool.js.map
@@ -1 +1 @@
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 \"@milaboratories/pl-model-common\";\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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"}
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 \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/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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"}
@@ -1,11 +1,10 @@
1
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
1
+ require("./_virtual/_rolldown/runtime.cjs");
2
2
  let _milaboratories_pl_model_middle_layer = require("@milaboratories/pl-model-middle-layer");
3
-
4
3
  //#region src/ptable_shared.ts
5
4
  function stableKeyFromFullPTableDef(data) {
6
5
  return (0, _milaboratories_pl_model_middle_layer.hashJson)(data);
7
6
  }
8
-
9
7
  //#endregion
10
8
  exports.stableKeyFromFullPTableDef = stableKeyFromFullPTableDef;
9
+
11
10
  //# sourceMappingURL=ptable_shared.cjs.map
@@ -1 +1 @@
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 \"@milaboratories/pl-model-common\";\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"}
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 \"@milaboratories/pl-model-common\";\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,SAAA,GAAA,sCAAA,UAAgB,KAAK"}
@@ -1,10 +1,9 @@
1
1
  import { hashJson } from "@milaboratories/pl-model-middle-layer";
2
-
3
2
  //#region src/ptable_shared.ts
4
3
  function stableKeyFromFullPTableDef(data) {
5
4
  return hashJson(data);
6
5
  }
7
-
8
6
  //#endregion
9
7
  export { stableKeyFromFullPTableDef };
8
+
10
9
  //# sourceMappingURL=ptable_shared.js.map
@@ -1 +1 @@
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 \"@milaboratories/pl-model-common\";\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"}
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 \"@milaboratories/pl-model-common\";\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.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "PFrameDriver implementation abstracted from Middle Layer",
5
5
  "keywords": [],
6
6
  "license": "UNLICENSED",
@@ -20,22 +20,23 @@
20
20
  }
21
21
  },
22
22
  "dependencies": {
23
- "@milaboratories/pframes-rs-node": "1.1.17",
24
- "@milaboratories/pframes-rs-wasm": "1.1.17",
23
+ "@milaboratories/pframes-rs-node": "1.1.18",
24
+ "@milaboratories/pframes-rs-wasm": "1.1.18",
25
25
  "es-toolkit": "^1.39.10",
26
26
  "lru-cache": "^11.2.2",
27
- "@milaboratories/pl-model-common": "1.31.0",
28
- "@milaboratories/ts-helpers": "1.8.0",
29
- "@milaboratories/pl-model-middle-layer": "1.16.2"
27
+ "@milaboratories/helpers": "1.14.1",
28
+ "@milaboratories/ts-helpers": "1.8.1",
29
+ "@milaboratories/pl-model-common": "1.31.1",
30
+ "@milaboratories/pl-model-middle-layer": "1.16.3"
30
31
  },
31
32
  "devDependencies": {
32
33
  "@types/node": "~24.5.2",
33
- "@vitest/coverage-istanbul": "^4.0.18",
34
+ "@vitest/coverage-istanbul": "^4.1.3",
34
35
  "typescript": "~5.9.3",
35
- "vitest": "^4.0.18",
36
- "@milaboratories/ts-builder": "1.3.0",
37
- "@milaboratories/build-configs": "1.5.2",
38
- "@milaboratories/ts-configs": "1.2.2"
36
+ "vitest": "^4.1.3",
37
+ "@milaboratories/ts-builder": "1.3.1",
38
+ "@milaboratories/ts-configs": "1.2.3",
39
+ "@milaboratories/build-configs": "2.0.0"
39
40
  },
40
41
  "engines": {
41
42
  "node": ">=22.19.0"
@@ -15,7 +15,7 @@ import type {
15
15
  UniqueValuesRequest,
16
16
  UniqueValuesResponse,
17
17
  } from "@milaboratories/pl-model-common";
18
- import type { PoolEntry } from "@milaboratories/ts-helpers";
18
+ import type { PoolEntry } from "@milaboratories/helpers";
19
19
 
20
20
  /**
21
21
  * Extends public and safe SDK's driver API with methods used internally in the middle
@@ -6,7 +6,7 @@ import {
6
6
  type PColumnValues,
7
7
  } from "@milaboratories/pl-model-common";
8
8
  import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
9
- import { RefCountPoolBase, type PoolEntry } from "@milaboratories/ts-helpers";
9
+ import { RefCountPoolBase, type PoolEntry } from "@milaboratories/helpers";
10
10
  import { HttpHelpers } from "@milaboratories/pframes-rs-node";
11
11
  import fs from "node:fs";
12
12
  import path from "node:path";
@@ -35,11 +35,8 @@ import {
35
35
  resolveAnnotationParents,
36
36
  } from "@milaboratories/pl-model-common";
37
37
  import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
38
- import {
39
- ConcurrencyLimitingExecutor,
40
- PoolEntryGuard,
41
- type PoolEntry,
42
- } from "@milaboratories/ts-helpers";
38
+ import { ConcurrencyLimitingExecutor } from "@milaboratories/ts-helpers";
39
+ import { PoolEntryGuard, type PoolEntry } from "@milaboratories/helpers";
43
40
  import { PFrameFactory } from "@milaboratories/pframes-rs-node";
44
41
  import { tmpdir } from "node:os";
45
42
  import type { AbstractInternalPFrameDriver } from "./driver_decl";
@@ -10,7 +10,7 @@ import {
10
10
  type PFrameHandle,
11
11
  } from "@milaboratories/pl-model-common";
12
12
  import { hashJson, PFrameInternal } from "@milaboratories/pl-model-middle-layer";
13
- import { RefCountPoolBase, type PoolEntry } from "@milaboratories/ts-helpers";
13
+ import { RefCountPoolBase, type PoolEntry } from "@milaboratories/helpers";
14
14
  import { PFrameFactory } from "@milaboratories/pframes-rs-node";
15
15
  import { mapValues } from "es-toolkit";
16
16
  import { logPFrames } from "./logging";
@@ -1,6 +1,6 @@
1
1
  import type { PFrameHandle, PTableHandle } from "@milaboratories/pl-model-common";
2
2
  import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
3
- import type { PoolEntry } from "@milaboratories/ts-helpers";
3
+ import type { PoolEntry } from "@milaboratories/helpers";
4
4
  import { LRUCache } from "lru-cache";
5
5
  import { logPFrames } from "./logging";
6
6
  import type { PTableHolder } from "./ptable_pool";
@@ -1,6 +1,6 @@
1
1
  import type { PTableHandle } from "@milaboratories/pl-model-common";
2
2
  import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
3
- import type { PoolEntry } from "@milaboratories/ts-helpers";
3
+ import type { PoolEntry } from "@milaboratories/helpers";
4
4
  import { LRUCache } from "lru-cache";
5
5
  import { logPFrames } from "./logging";
6
6
  import type { PTableHolder } from "./ptable_pool";
@@ -1,6 +1,6 @@
1
1
  import { PFrameDriverError, type PTableHandle } from "@milaboratories/pl-model-common";
2
2
  import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
3
- import { RefCountPoolBase } from "@milaboratories/ts-helpers";
3
+ import { RefCountPoolBase } from "@milaboratories/helpers";
4
4
  import { logPFrames } from "./logging";
5
5
  import type { FullPTableDef } from "./ptable_shared";
6
6
  import { stableKeyFromFullPTableDef } from "./ptable_shared";
@@ -10,7 +10,7 @@ import {
10
10
  type PObjectId,
11
11
  } from "@milaboratories/pl-model-common";
12
12
  import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
13
- import { RefCountPoolBase, type PoolEntry } from "@milaboratories/ts-helpers";
13
+ import { RefCountPoolBase, type PoolEntry } from "@milaboratories/helpers";
14
14
  import { logPFrames } from "./logging";
15
15
  import type { PFramePool } from "./pframe_pool";
16
16
  import {