@milaboratories/pl-middle-layer 1.11.5 → 1.11.6
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/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +706 -693
- package/dist/index.mjs.map +1 -1
- package/dist/pool/driver.d.ts +1 -0
- package/dist/pool/driver.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/pool/driver.ts +17 -1
package/dist/pool/driver.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare class PFrameDriver implements SdkPFrameDriver {
|
|
|
6
6
|
private readonly blobDriver;
|
|
7
7
|
private readonly pFrames;
|
|
8
8
|
private readonly pTables;
|
|
9
|
+
private readonly blobContentCache;
|
|
9
10
|
constructor(blobDriver: DownloadDriver);
|
|
10
11
|
createPFrame(def: PFrameDef<PlTreeNodeAccessor>, ctx: ComputableCtx): PFrameHandle;
|
|
11
12
|
createPTable(def: PTableDef<PColumn<PlTreeNodeAccessor>>, ctx: ComputableCtx): PTableHandle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAgB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,IAAI,eAAe,EAC/B,OAAO,EAEP,SAAS,EACT,SAAS,EACT,SAAS,EAEV,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAgB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,IAAI,eAAe,EAC/B,OAAO,EAEP,SAAS,EACT,SAAS,EACT,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAuF9B,qBAAa,YAAa,YAAW,eAAe;IAKtC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyD;IACjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;gBAEnC,UAAU,EAAE,cAAc;IA8ChD,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,aAAa,GAAG,YAAY;IAOlF,YAAY,CACjB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC3C,GAAG,EAAE,aAAa,GACjB,YAAY;IAYF,WAAW,CACtB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAelB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAI9E,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI9D,kBAAkB,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,GAC5C,OAAO,CAAC,0BAA0B,CAAC;IAsBzB,eAAe,CAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;IAQnB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAKpD,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAK1D,OAAO,CAClB,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC;CAI3B;AA+CD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAI/E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.6",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"@milaboratories/pframes-node": "^1.5.10",
|
|
23
23
|
"canonicalize": "^2.0.0",
|
|
24
24
|
"denque": "^2.1.0",
|
|
25
|
+
"lru-cache": "^11.0.1",
|
|
25
26
|
"quickjs-emscripten": "^0.31.0",
|
|
26
27
|
"undici": "^6.19.8",
|
|
27
28
|
"utility-types": "^3.11.0",
|
|
@@ -29,17 +30,17 @@
|
|
|
29
30
|
"zod": "^3.23.8",
|
|
30
31
|
"@milaboratories/computable": "^2.1.12",
|
|
31
32
|
"@milaboratories/resolve-helper": "^1.0.1",
|
|
32
|
-
"@platforma-sdk/block-tools": "^2.3.
|
|
33
|
+
"@platforma-sdk/block-tools": "^2.3.13",
|
|
33
34
|
"@milaboratories/pl-client": "^2.5.0",
|
|
34
|
-
"@milaboratories/pl-drivers": "^1.2.32",
|
|
35
35
|
"@milaboratories/pl-model-common": "^1.3.14",
|
|
36
|
-
"@milaboratories/pl-
|
|
37
|
-
"@milaboratories/pl-
|
|
36
|
+
"@milaboratories/pl-drivers": "^1.2.32",
|
|
37
|
+
"@milaboratories/pl-model-middle-layer": "^1.4.5",
|
|
38
|
+
"@platforma-sdk/model": "^1.5.40",
|
|
38
39
|
"@milaboratories/ts-helpers": "^1.0.30",
|
|
40
|
+
"@milaboratories/pl-tree": "^1.4.1",
|
|
39
41
|
"@platforma-sdk/workflow-tengo": "1.4.2",
|
|
40
|
-
"@
|
|
41
|
-
"@milaboratories/pl-local": "^1.2.
|
|
42
|
-
"@milaboratories/pl-config": "^1.2.6"
|
|
42
|
+
"@milaboratories/pl-config": "^1.2.6",
|
|
43
|
+
"@milaboratories/pl-local": "^1.2.5"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"typescript": "~5.5.4",
|
package/src/pool/driver.ts
CHANGED
|
@@ -33,6 +33,8 @@ import { createHash } from 'crypto';
|
|
|
33
33
|
import { assertNever } from '@milaboratories/ts-helpers';
|
|
34
34
|
import canonicalize from 'canonicalize';
|
|
35
35
|
import { PFrame } from '@milaboratories/pframes-node';
|
|
36
|
+
import * as fsp from 'node:fs/promises';
|
|
37
|
+
import { LRUCache } from 'lru-cache';
|
|
36
38
|
|
|
37
39
|
function blobKey(res: ResourceInfo): string {
|
|
38
40
|
return String(res.id);
|
|
@@ -50,6 +52,7 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
50
52
|
|
|
51
53
|
constructor(
|
|
52
54
|
private readonly blobDriver: DownloadDriver,
|
|
55
|
+
private readonly blobContentCache: LRUCache<string, Uint8Array>,
|
|
53
56
|
private readonly columns: InternalPFrameData
|
|
54
57
|
) {
|
|
55
58
|
// pframe initialization
|
|
@@ -93,6 +96,12 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
93
96
|
return this.blobDriver.getLocalPath((await computable.awaitStableValue()).handle);
|
|
94
97
|
};
|
|
95
98
|
|
|
99
|
+
public readonly resolveBlobContent = async (blobId: string): Promise<Uint8Array> => {
|
|
100
|
+
const computable = this.getOrCreateComputableForBlob(blobId);
|
|
101
|
+
const path = this.blobDriver.getLocalPath((await computable.awaitStableValue()).handle);
|
|
102
|
+
return await this.blobContentCache.forceFetch(path);
|
|
103
|
+
};
|
|
104
|
+
|
|
96
105
|
[Symbol.dispose](): void {
|
|
97
106
|
for (const computable of this.blobHandleComputables.values()) computable.resetState();
|
|
98
107
|
this.pFrame.dispose();
|
|
@@ -107,14 +116,21 @@ type FullPTableDef = {
|
|
|
107
116
|
export class PFrameDriver implements SdkPFrameDriver {
|
|
108
117
|
private readonly pFrames: RefCountResourcePool<InternalPFrameData, PFrameHolder>;
|
|
109
118
|
private readonly pTables: RefCountResourcePool<FullPTableDef, Promise<PFrameInternal.PTable>>;
|
|
119
|
+
private readonly blobContentCache: LRUCache<string, Uint8Array>;
|
|
110
120
|
|
|
111
121
|
constructor(private readonly blobDriver: DownloadDriver) {
|
|
122
|
+
const blobContentCache = new LRUCache<string, Uint8Array>({
|
|
123
|
+
maxSize: 1_000_000_000, // 1Gb
|
|
124
|
+
fetchMethod: async (key) => await fsp.readFile(key),
|
|
125
|
+
sizeCalculation: (v) => v.length
|
|
126
|
+
});
|
|
127
|
+
this.blobContentCache = blobContentCache;
|
|
112
128
|
this.pFrames = new (class extends RefCountResourcePool<InternalPFrameData, PFrameHolder> {
|
|
113
129
|
constructor(private readonly blobDriver: DownloadDriver) {
|
|
114
130
|
super();
|
|
115
131
|
}
|
|
116
132
|
protected createNewResource(params: InternalPFrameData): PFrameHolder {
|
|
117
|
-
return new PFrameHolder(this.blobDriver, params);
|
|
133
|
+
return new PFrameHolder(this.blobDriver, blobContentCache, params);
|
|
118
134
|
}
|
|
119
135
|
protected calculateParamsKey(params: InternalPFrameData): string {
|
|
120
136
|
return stableKeyFromPFrameData(params);
|