@milaboratories/pl-middle-layer 1.39.4 → 1.39.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 +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1331 -1193
- package/dist/index.mjs.map +1 -1
- package/dist/middle_layer/project.d.ts +13 -0
- package/dist/middle_layer/project.d.ts.map +1 -1
- package/dist/model/project_model.d.ts +1 -0
- package/dist/model/project_model.d.ts.map +1 -1
- package/dist/mutator/project.d.ts +15 -2
- package/dist/mutator/project.d.ts.map +1 -1
- package/dist/pool/driver.d.ts.map +1 -1
- package/dist/pool/ref_count_pool.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/middle_layer/project.ts +26 -0
- package/src/model/project_model.ts +11 -0
- package/src/mutator/project.ts +146 -32
- package/src/pool/driver.ts +44 -7
- package/src/pool/ref_count_pool.ts +3 -2
|
@@ -36,6 +36,19 @@ export declare class Project {
|
|
|
36
36
|
* @return returns newly created block id
|
|
37
37
|
* */
|
|
38
38
|
addBlock(blockLabel: string, blockPackSpec: BlockPackSpecAny, before?: string, author?: AuthorMarker | undefined, blockId?: string): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Duplicates an existing block by copying all its fields and state.
|
|
41
|
+
* This method works at the mutator level for efficient block copying.
|
|
42
|
+
*
|
|
43
|
+
* @param originalBlockId id of the block to duplicate
|
|
44
|
+
* @param before id of the block to insert new block before
|
|
45
|
+
* @param author author marker for the duplication operation
|
|
46
|
+
* @param newBlockId internal id to be assigned for the duplicated block,
|
|
47
|
+
* if omitted, a randomly generated UUID will be assigned
|
|
48
|
+
*
|
|
49
|
+
* @return returns newly created block id
|
|
50
|
+
* */
|
|
51
|
+
duplicateBlock(originalBlockId: string, before?: string, author?: AuthorMarker | undefined, newBlockId?: string): Promise<string>;
|
|
39
52
|
/**
|
|
40
53
|
* Update block to new block pack, optionally resetting args and ui state to
|
|
41
54
|
* initial values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,uBAAuB,EAA2B,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIjD,OAAO,EAAE,qBAAqB,EAAiB,MAAM,yBAAyB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,uCAAuC,CAAC;AAwC/C,iFAAiF;AACjF,qBAAa,OAAO;IAoBhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IArB9B,gCAAgC;IAChC,SAAgB,GAAG,EAAE,UAAU,CAAC;IAEhC,6EAA6E;IAC7E,SAAgB,QAAQ,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IAEjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAE3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmD;IAEpF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4D;IAC3F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,SAAS,CAAS;gBAGP,GAAG,EAAE,sBAAsB,EAC5C,GAAG,EAAE,UAAU,EACE,WAAW,EAAE,qBAAqB;YAcvC,WAAW;IAgCzB;;;;;;;;;;SAUK;IACQ,QAAQ,CACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,gBAAgB,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,GAAE,YAAY,GAAG,SAAqB,EAC5C,OAAO,GAAE,MAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAwBlB;;;SAGK;IACQ,eAAe,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,gBAAgB,EAC/B,SAAS,GAAE,OAAe,EAC1B,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC;IAahB,gDAAgD;IACnC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E;;;;;OAKG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlF;;;;SAIK;IACQ,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;SAIK;IACQ,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD;;;;;SAKK;IACQ,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY;IAO/E;;;;;SAKK;IACQ,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY;IAOhF;;SAEK;IAEQ,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF;;;;;SAKK;IACQ,sBAAsB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,YAAY;IAQvB,4BAA4B;IACf,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAOtE,kEAAkE;IACrD,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5F,OAAO,CAAC,mBAAmB;IA2C3B;;;SAGK;IACE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAIrE;;;SAGK;IACE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAAC,YAAY,CAAC;IAc/E,sCAAsC;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC,kBAAkB;IACL,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;WAIpC,IAAI,CAAC,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CA4BzF"}
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,7 @@ export interface ProjectField {
|
|
|
60
60
|
blockId: string;
|
|
61
61
|
fieldName: 'blockPack' | 'blockSettings' | 'uiState' | 'prodArgs' | 'currentArgs' | 'prodCtx' | 'prodUiCtx' | 'prodOutput' | 'prodCtxPrevious' | 'prodUiCtxPrevious' | 'prodOutputPrevious' | 'stagingCtx' | 'stagingUiCtx' | 'stagingOutput' | 'stagingCtxPrevious' | 'stagingUiCtxPrevious' | 'stagingOutputPrevious';
|
|
62
62
|
}
|
|
63
|
+
export declare const FieldsToDuplicate: Set<ProjectField['fieldName']>;
|
|
63
64
|
export declare function projectFieldName(blockId: string, fieldName: ProjectField['fieldName']): string;
|
|
64
65
|
export declare function parseProjectField(name: string): ProjectField | undefined;
|
|
65
66
|
//# sourceMappingURL=project_model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project_model.d.ts","sourceRoot":"","sources":["../../src/model/project_model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,IAAI,yBAAyB,EAC7C,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;IACjE,2BAA2B;IAC3B,GAAG,EAAE,UAAU,CAAC;CACjB;AAED,2DAA2D;AAC3D,MAAM,WAAW,KAAK;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;SAGK;IACL,KAAK,EAAE,MAAM,CAAC;IAEd,sCAAsC;IACtC,aAAa,EAAE,kBAAkB,CAAC;CACnC;AAED,qCAAqC;AACrC,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,aAAa;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAEhC;yEACqE;IACrE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,4BAA4B,EAAE,qBAG1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAE9B,CAAC;AAMF,eAAO,MAAM,mBAAmB,EAAE,YAAoD,CAAC;AAEvF,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AACxD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,QAAsC,CAAC;AAE7E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,eAAO,MAAM,+BAA+B,uBAAuB,CAAC;AAEpE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EACL,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,aAAa,GACb,SAAS,GACT,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,YAAY,GACZ,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,CAE9F;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE"}
|
|
1
|
+
{"version":3,"file":"project_model.d.ts","sourceRoot":"","sources":["../../src/model/project_model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,IAAI,yBAAyB,EAC7C,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;IACjE,2BAA2B;IAC3B,GAAG,EAAE,UAAU,CAAC;CACjB;AAED,2DAA2D;AAC3D,MAAM,WAAW,KAAK;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;SAGK;IACL,KAAK,EAAE,MAAM,CAAC;IAEd,sCAAsC;IACtC,aAAa,EAAE,kBAAkB,CAAC;CACnC;AAED,qCAAqC;AACrC,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,aAAa;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAEhC;yEACqE;IACrE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,4BAA4B,EAAE,qBAG1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAE9B,CAAC;AAMF,eAAO,MAAM,mBAAmB,EAAE,YAAoD,CAAC;AAEvF,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AACxD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,QAAsC,CAAC;AAE7E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,eAAO,MAAM,+BAA+B,uBAAuB,CAAC;AAEpE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EACL,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,aAAa,GACb,SAAS,GACT,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,YAAY,GACZ,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,CAAC;CAC7B;AAED,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAS3D,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,CAE9F;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE"}
|
|
@@ -88,7 +88,8 @@ export declare class ProjectMutator {
|
|
|
88
88
|
private resetStaging;
|
|
89
89
|
private resetProduction;
|
|
90
90
|
/** Running blocks are reset, already computed moved to limbo. Returns if
|
|
91
|
-
* either of the actions were actually performed.
|
|
91
|
+
* either of the actions were actually performed.
|
|
92
|
+
* This method ensures the block is left in a consistent state that passes check() constraints. */
|
|
92
93
|
private resetOrLimboProduction;
|
|
93
94
|
/** Optimally sets inputs for multiple blocks in one go */
|
|
94
95
|
setStates(requests: SetStatesRequest[]): void;
|
|
@@ -98,9 +99,21 @@ export declare class ProjectMutator {
|
|
|
98
99
|
private exportCtx;
|
|
99
100
|
private renderStagingFor;
|
|
100
101
|
private renderProductionFor;
|
|
102
|
+
private initializeNewBlock;
|
|
103
|
+
private getFieldNamesToDuplicate;
|
|
104
|
+
private initializeBlockDuplicate;
|
|
101
105
|
/** Very generic method, better check for more specialized case-specific methods first. */
|
|
102
|
-
updateStructure(newStructure: ProjectStructure,
|
|
106
|
+
updateStructure(newStructure: ProjectStructure, newBlockInitializer?: (blockId: string) => void): void;
|
|
103
107
|
addBlock(block: Block, spec: NewBlockSpec, before?: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Duplicates an existing block by copying all its fields and structure.
|
|
110
|
+
* This method creates a deep copy of the block at the mutator level.
|
|
111
|
+
*
|
|
112
|
+
* @param originalBlockId id of the block to duplicate
|
|
113
|
+
* @param newBlockId id for the new duplicated block
|
|
114
|
+
* @param after id of the block to insert new block after
|
|
115
|
+
*/
|
|
116
|
+
duplicateBlock(originalBlockId: string, newBlockId: string, after?: string): void;
|
|
104
117
|
deleteBlock(blockId: string): void;
|
|
105
118
|
migrateBlockPack(blockId: string, spec: BlockPackSpecPrepared, newArgsAndUiState?: ArgsAndUiState): void;
|
|
106
119
|
renderProduction(blockIds: string[], addUpstreams?: boolean): Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/mutator/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EAEd,aAAa,EAEb,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EASL,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/mutator/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EACV,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,EACP,SAAS,EAET,SAAS,EAIT,aAAa,EACb,QAAQ,EAET,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref_count_pool.d.ts","sourceRoot":"","sources":["../../src/pool/ref_count_pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;AAEjC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErB,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,8BAAsB,oBAAoB,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;IAExD,OAAO,CAAC,KAAK;IAkBN,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAyBnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"ref_count_pool.d.ts","sourceRoot":"","sources":["../../src/pool/ref_count_pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;AAEjC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErB,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,8BAAsB,oBAAoB,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;IAExD,OAAO,CAAC,KAAK;IAkBN,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAyBnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC;IAMxB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;CAG/C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.39.
|
|
3
|
+
"version": "1.39.6",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=20.16.0"
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"keywords": [],
|
|
23
23
|
"license": "UNLICENSED",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@milaboratories/pframes-rs-node": "1.0.
|
|
25
|
+
"@milaboratories/pframes-rs-node": "1.0.52",
|
|
26
26
|
"canonicalize": "~2.1.0",
|
|
27
27
|
"denque": "^2.1.0",
|
|
28
28
|
"lru-cache": "^11.1.0",
|
|
@@ -33,21 +33,21 @@
|
|
|
33
33
|
"zod": "~3.23.8",
|
|
34
34
|
"remeda": "^2.22.6",
|
|
35
35
|
"@milaboratories/pl-http": "^1.1.4",
|
|
36
|
-
"@milaboratories/computable": "^2.6.0",
|
|
37
|
-
"@milaboratories/pl-drivers": "^1.6.2",
|
|
38
36
|
"@milaboratories/resolve-helper": "^1.1.0",
|
|
39
|
-
"@milaboratories/
|
|
40
|
-
"@platforma-sdk/block-tools": "^2.5.
|
|
37
|
+
"@milaboratories/computable": "^2.6.0",
|
|
38
|
+
"@platforma-sdk/block-tools": "^2.5.67",
|
|
41
39
|
"@milaboratories/pl-client": "^2.11.2",
|
|
42
|
-
"@milaboratories/pl-
|
|
40
|
+
"@milaboratories/pl-drivers": "^1.6.3",
|
|
41
|
+
"@milaboratories/pl-model-middle-layer": "~1.7.49",
|
|
42
|
+
"@milaboratories/pl-model-common": "~1.16.3",
|
|
43
43
|
"@milaboratories/pl-model-backend": "~1.1.2",
|
|
44
44
|
"@milaboratories/pl-tree": "~1.7.0",
|
|
45
|
-
"@platforma-sdk/model": "~1.39.
|
|
45
|
+
"@platforma-sdk/model": "~1.39.8",
|
|
46
46
|
"@milaboratories/ts-helpers": "^1.4.1",
|
|
47
47
|
"@platforma-sdk/workflow-tengo": "4.9.3",
|
|
48
|
-
"@milaboratories/pl-errors": "^1.1.9",
|
|
49
48
|
"@milaboratories/pl-config": "^1.6.1",
|
|
50
|
-
"@milaboratories/pl-deployments": "^2.4.3"
|
|
49
|
+
"@milaboratories/pl-deployments": "^2.4.3",
|
|
50
|
+
"@milaboratories/pl-errors": "^1.1.9"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"semver": "^7.7.2",
|
|
@@ -184,6 +184,32 @@ export class Project {
|
|
|
184
184
|
return blockId;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Duplicates an existing block by copying all its fields and state.
|
|
189
|
+
* This method works at the mutator level for efficient block copying.
|
|
190
|
+
*
|
|
191
|
+
* @param originalBlockId id of the block to duplicate
|
|
192
|
+
* @param before id of the block to insert new block before
|
|
193
|
+
* @param author author marker for the duplication operation
|
|
194
|
+
* @param newBlockId internal id to be assigned for the duplicated block,
|
|
195
|
+
* if omitted, a randomly generated UUID will be assigned
|
|
196
|
+
*
|
|
197
|
+
* @return returns newly created block id
|
|
198
|
+
* */
|
|
199
|
+
public async duplicateBlock(
|
|
200
|
+
originalBlockId: string,
|
|
201
|
+
before?: string,
|
|
202
|
+
author: AuthorMarker | undefined = undefined,
|
|
203
|
+
newBlockId: string = randomUUID(),
|
|
204
|
+
): Promise<string> {
|
|
205
|
+
await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) =>
|
|
206
|
+
mut.duplicateBlock(originalBlockId, newBlockId, before),
|
|
207
|
+
);
|
|
208
|
+
await this.projectTree.refreshState();
|
|
209
|
+
|
|
210
|
+
return newBlockId;
|
|
211
|
+
}
|
|
212
|
+
|
|
187
213
|
/**
|
|
188
214
|
* Update block to new block pack, optionally resetting args and ui state to
|
|
189
215
|
* initial values
|
|
@@ -118,6 +118,17 @@ export interface ProjectField {
|
|
|
118
118
|
| 'stagingOutputPrevious';
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
export const FieldsToDuplicate: Set<ProjectField['fieldName']> = new Set([
|
|
122
|
+
'blockPack',
|
|
123
|
+
'blockSettings',
|
|
124
|
+
'uiState',
|
|
125
|
+
'prodArgs',
|
|
126
|
+
'currentArgs',
|
|
127
|
+
'prodCtx',
|
|
128
|
+
'prodUiCtx',
|
|
129
|
+
'prodOutput',
|
|
130
|
+
]);
|
|
131
|
+
|
|
121
132
|
export function projectFieldName(blockId: string, fieldName: ProjectField['fieldName']): string {
|
|
122
133
|
return `${blockId}-${fieldName}`;
|
|
123
134
|
}
|
package/src/mutator/project.ts
CHANGED
|
@@ -39,6 +39,7 @@ import {
|
|
|
39
39
|
ProjectCreatedTimestamp,
|
|
40
40
|
ProjectStructureAuthorKey,
|
|
41
41
|
getServiceTemplateField,
|
|
42
|
+
FieldsToDuplicate,
|
|
42
43
|
} from '../model/project_model';
|
|
43
44
|
import { BlockPackTemplateField, createBlockPack } from './block-pack/block_pack';
|
|
44
45
|
import type {
|
|
@@ -472,25 +473,37 @@ export class ProjectMutator {
|
|
|
472
473
|
}
|
|
473
474
|
|
|
474
475
|
/** Running blocks are reset, already computed moved to limbo. Returns if
|
|
475
|
-
* either of the actions were actually performed.
|
|
476
|
+
* either of the actions were actually performed.
|
|
477
|
+
* This method ensures the block is left in a consistent state that passes check() constraints. */
|
|
476
478
|
private resetOrLimboProduction(blockId: string): boolean {
|
|
477
479
|
const fields = this.getBlockInfo(blockId).fields;
|
|
480
|
+
|
|
481
|
+
// Check if we can safely move to limbo (both core production fields are ready)
|
|
478
482
|
if (fields.prodOutput?.status === 'Ready' && fields.prodCtx?.status === 'Ready') {
|
|
479
483
|
if (this.blocksInLimbo.has(blockId))
|
|
480
484
|
// we are already in limbo
|
|
481
485
|
return false;
|
|
482
486
|
|
|
483
|
-
// limbo
|
|
487
|
+
// limbo - keep the ready production results but clean up cache
|
|
484
488
|
this.blocksInLimbo.add(blockId);
|
|
485
489
|
this.renderingStateChanged = true;
|
|
486
490
|
|
|
487
|
-
// doing some gc
|
|
491
|
+
// doing some gc - clean up previous cache fields
|
|
488
492
|
this.deleteBlockFields(blockId, 'prodOutputPrevious', 'prodCtxPrevious', 'prodUiCtxPrevious');
|
|
489
493
|
|
|
490
494
|
return true;
|
|
491
495
|
} else {
|
|
492
|
-
// reset
|
|
493
|
-
return this.deleteBlockFields(
|
|
496
|
+
// reset - clean up any partial/inconsistent production stat
|
|
497
|
+
return this.deleteBlockFields(
|
|
498
|
+
blockId,
|
|
499
|
+
'prodOutput',
|
|
500
|
+
'prodCtx',
|
|
501
|
+
'prodUiCtx',
|
|
502
|
+
'prodArgs',
|
|
503
|
+
'prodOutputPrevious',
|
|
504
|
+
'prodCtxPrevious',
|
|
505
|
+
'prodUiCtxPrevious',
|
|
506
|
+
);
|
|
494
507
|
}
|
|
495
508
|
}
|
|
496
509
|
|
|
@@ -643,10 +656,92 @@ export class ProjectMutator {
|
|
|
643
656
|
// Structure changes
|
|
644
657
|
//
|
|
645
658
|
|
|
659
|
+
private initializeNewBlock(blockId: string, spec: NewBlockSpec): void {
|
|
660
|
+
const info = new BlockInfo(blockId, {}, extractConfig(spec.blockPack.config), spec.blockPack.source);
|
|
661
|
+
this.blockInfos.set(blockId, info);
|
|
662
|
+
|
|
663
|
+
// block pack
|
|
664
|
+
const bp = createBlockPack(this.tx, spec.blockPack);
|
|
665
|
+
this.setBlockField(blockId, 'blockPack', Pl.wrapInHolder(this.tx, bp), 'NotReady');
|
|
666
|
+
|
|
667
|
+
// settings
|
|
668
|
+
this.setBlockFieldObj(
|
|
669
|
+
blockId,
|
|
670
|
+
'blockSettings',
|
|
671
|
+
this.createJsonFieldValue(InitialBlockSettings),
|
|
672
|
+
);
|
|
673
|
+
|
|
674
|
+
// args
|
|
675
|
+
this.setBlockFieldObj(blockId, 'currentArgs', this.createJsonFieldValueByContent(spec.args));
|
|
676
|
+
|
|
677
|
+
// uiState
|
|
678
|
+
this.setBlockFieldObj(blockId, 'uiState', this.createJsonFieldValueByContent(spec.uiState ?? '{}'));
|
|
679
|
+
|
|
680
|
+
// checking structure
|
|
681
|
+
info.check();
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
private getFieldNamesToDuplicate(blockId: string): Set<ProjectField['fieldName']> {
|
|
685
|
+
const fields = this.getBlockInfo(blockId).fields;
|
|
686
|
+
|
|
687
|
+
const diff = <T>(setA: Set<T>, setB: Set<T>): Set<T> => new Set([...setA].filter((x) => !setB.has(x)));
|
|
688
|
+
|
|
689
|
+
// Check if we can safely move to limbo (both core production fields are ready)
|
|
690
|
+
if (fields.prodOutput?.status === 'Ready' && fields.prodCtx?.status === 'Ready') {
|
|
691
|
+
if (this.blocksInLimbo.has(blockId))
|
|
692
|
+
// we are already in limbo
|
|
693
|
+
return FieldsToDuplicate;
|
|
694
|
+
|
|
695
|
+
return diff(FieldsToDuplicate, new Set([
|
|
696
|
+
'prodOutputPrevious',
|
|
697
|
+
'prodCtxPrevious',
|
|
698
|
+
'prodUiCtxPrevious',
|
|
699
|
+
]));
|
|
700
|
+
} else {
|
|
701
|
+
return diff(FieldsToDuplicate, new Set([
|
|
702
|
+
'prodOutput',
|
|
703
|
+
'prodCtx',
|
|
704
|
+
'prodUiCtx',
|
|
705
|
+
'prodArgs',
|
|
706
|
+
'prodOutputPrevious',
|
|
707
|
+
'prodCtxPrevious',
|
|
708
|
+
'prodUiCtxPrevious',
|
|
709
|
+
]));
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
private initializeBlockDuplicate(blockId: string, originalBlockInfo: BlockInfo) {
|
|
714
|
+
const info = new BlockInfo(
|
|
715
|
+
blockId,
|
|
716
|
+
{},
|
|
717
|
+
originalBlockInfo.config,
|
|
718
|
+
originalBlockInfo.source,
|
|
719
|
+
);
|
|
720
|
+
|
|
721
|
+
this.blockInfos.set(blockId, info);
|
|
722
|
+
|
|
723
|
+
const fieldNamesToDuplicate = this.getFieldNamesToDuplicate(blockId);
|
|
724
|
+
|
|
725
|
+
// Copy all fields from original block to new block by sharing references
|
|
726
|
+
for (const [fieldName, fieldState] of Object.entries(originalBlockInfo.fields)) {
|
|
727
|
+
if (fieldNamesToDuplicate.has(fieldName as ProjectField['fieldName']) && fieldState && fieldState.ref) {
|
|
728
|
+
this.setBlockFieldObj(blockId, fieldName as keyof BlockFieldStates, {
|
|
729
|
+
ref: fieldState.ref,
|
|
730
|
+
status: fieldState.status,
|
|
731
|
+
value: fieldState.value,
|
|
732
|
+
});
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
this.resetOrLimboProduction(blockId);
|
|
737
|
+
|
|
738
|
+
info.check();
|
|
739
|
+
}
|
|
740
|
+
|
|
646
741
|
/** Very generic method, better check for more specialized case-specific methods first. */
|
|
647
742
|
public updateStructure(
|
|
648
743
|
newStructure: ProjectStructure,
|
|
649
|
-
|
|
744
|
+
newBlockInitializer: (blockId: string) => void = NoNewBlocks,
|
|
650
745
|
): void {
|
|
651
746
|
const currentStagingGraph = this.getStagingGraph();
|
|
652
747
|
const currentActualProductionGraph = this.getActualProductionGraph();
|
|
@@ -665,31 +760,7 @@ export class ProjectMutator {
|
|
|
665
760
|
|
|
666
761
|
// creating new blocks
|
|
667
762
|
for (const blockId of stagingDiff.onlyInB) {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
// adding new block info
|
|
671
|
-
const info = new BlockInfo(blockId, {}, extractConfig(spec.blockPack.config), spec.blockPack.source);
|
|
672
|
-
this.blockInfos.set(blockId, info);
|
|
673
|
-
|
|
674
|
-
// block pack
|
|
675
|
-
const bp = createBlockPack(this.tx, spec.blockPack);
|
|
676
|
-
this.setBlockField(blockId, 'blockPack', Pl.wrapInHolder(this.tx, bp), 'NotReady');
|
|
677
|
-
|
|
678
|
-
// settings
|
|
679
|
-
this.setBlockFieldObj(
|
|
680
|
-
blockId,
|
|
681
|
-
'blockSettings',
|
|
682
|
-
this.createJsonFieldValue(InitialBlockSettings),
|
|
683
|
-
);
|
|
684
|
-
|
|
685
|
-
// args
|
|
686
|
-
this.setBlockFieldObj(blockId, 'currentArgs', this.createJsonFieldValueByContent(spec.args));
|
|
687
|
-
|
|
688
|
-
// uiState
|
|
689
|
-
this.setBlockFieldObj(blockId, 'uiState', this.createJsonFieldValueByContent(spec.uiState ?? '{}'));
|
|
690
|
-
|
|
691
|
-
// checking structure
|
|
692
|
-
info.check();
|
|
763
|
+
newBlockInitializer(blockId);
|
|
693
764
|
}
|
|
694
765
|
|
|
695
766
|
// resetting stagings affected by topology change
|
|
@@ -747,7 +818,50 @@ export class ProjectMutator {
|
|
|
747
818
|
}
|
|
748
819
|
this.updateStructure(newStruct, (blockId) => {
|
|
749
820
|
if (blockId !== block.id) throw new Error('Unexpected');
|
|
750
|
-
|
|
821
|
+
this.initializeNewBlock(blockId, spec);
|
|
822
|
+
});
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Duplicates an existing block by copying all its fields and structure.
|
|
827
|
+
* This method creates a deep copy of the block at the mutator level.
|
|
828
|
+
*
|
|
829
|
+
* @param originalBlockId id of the block to duplicate
|
|
830
|
+
* @param newBlockId id for the new duplicated block
|
|
831
|
+
* @param after id of the block to insert new block after
|
|
832
|
+
*/
|
|
833
|
+
public duplicateBlock(originalBlockId: string, newBlockId: string, after?: string): void {
|
|
834
|
+
// Get the original block from structure
|
|
835
|
+
const originalBlock = this.getBlock(originalBlockId);
|
|
836
|
+
const originalBlockInfo = this.getBlockInfo(originalBlockId);
|
|
837
|
+
|
|
838
|
+
// Create new block in structure
|
|
839
|
+
const newBlock: Block = {
|
|
840
|
+
id: newBlockId,
|
|
841
|
+
label: originalBlock.label,
|
|
842
|
+
renderingMode: originalBlock.renderingMode,
|
|
843
|
+
};
|
|
844
|
+
|
|
845
|
+
// Add the new block to structure
|
|
846
|
+
const newStruct = this.structure; // copy current structure
|
|
847
|
+
if (after === undefined) {
|
|
848
|
+
// adding as a very last block
|
|
849
|
+
newStruct.groups[newStruct.groups.length - 1].blocks.push(newBlock);
|
|
850
|
+
} else {
|
|
851
|
+
let done = false;
|
|
852
|
+
for (const group of newStruct.groups) {
|
|
853
|
+
const idx = group.blocks.findIndex((b) => b.id === after);
|
|
854
|
+
if (idx < 0) continue;
|
|
855
|
+
group.blocks.splice(idx + 1, 0, newBlock);
|
|
856
|
+
done = true;
|
|
857
|
+
break;
|
|
858
|
+
}
|
|
859
|
+
if (!done) throw new Error(`Can't find element with id: ${after}`);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
this.updateStructure(newStruct, (blockId) => {
|
|
863
|
+
if (blockId !== newBlockId) throw new Error('Unexpected');
|
|
864
|
+
this.initializeBlockDuplicate(blockId, originalBlockInfo);
|
|
751
865
|
});
|
|
752
866
|
}
|
|
753
867
|
|
package/src/pool/driver.ts
CHANGED
|
@@ -39,6 +39,9 @@ import {
|
|
|
39
39
|
mapDataInfo,
|
|
40
40
|
isDataInfo,
|
|
41
41
|
ensureError,
|
|
42
|
+
PFrameDriverError,
|
|
43
|
+
isAbortError,
|
|
44
|
+
isPFrameDriverError,
|
|
42
45
|
} from '@platforma-sdk/model';
|
|
43
46
|
import { LRUCache } from 'lru-cache';
|
|
44
47
|
import type { PollResource } from './ref_count_pool';
|
|
@@ -209,8 +212,8 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
209
212
|
}
|
|
210
213
|
this.pFrame = pFrame;
|
|
211
214
|
} catch (err: unknown) {
|
|
212
|
-
throw new
|
|
213
|
-
`
|
|
215
|
+
throw new PFrameDriverError(
|
|
216
|
+
`PFrame creation failed, columns: ${JSON.stringify(distinctСolumns)}, error: ${ensureError(err)}`,
|
|
214
217
|
);
|
|
215
218
|
}
|
|
216
219
|
}
|
|
@@ -220,7 +223,7 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
220
223
|
if (computable !== undefined) return computable;
|
|
221
224
|
|
|
222
225
|
const blobResource = this.blobIdToResource.get(blobId);
|
|
223
|
-
if (blobResource === undefined) throw new
|
|
226
|
+
if (blobResource === undefined) throw new PFrameDriverError(`Blob with id ${blobId} not found.`);
|
|
224
227
|
|
|
225
228
|
// precalculation of value tree will trigger the download proecess right away
|
|
226
229
|
computable = this.blobDriver.getDownloadedBlob(blobResource).withPreCalculatedValueTree();
|
|
@@ -232,7 +235,16 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
232
235
|
|
|
233
236
|
public readonly preloadBlob = async (blobIds: string[]): Promise<void> => {
|
|
234
237
|
const computables = blobIds.map((blobId) => this.getOrCreateComputableForBlob(blobId));
|
|
235
|
-
for (const computable of computables)
|
|
238
|
+
for (const computable of computables) {
|
|
239
|
+
try {
|
|
240
|
+
await computable.awaitStableFullValue(this.disposeSignal);
|
|
241
|
+
} catch (err: unknown) {
|
|
242
|
+
if (isAbortError(err)) {
|
|
243
|
+
break; // silence abort errors
|
|
244
|
+
}
|
|
245
|
+
throw err;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
236
248
|
};
|
|
237
249
|
|
|
238
250
|
public readonly resolveBlobContent = async (blobId: string): Promise<Uint8Array> => {
|
|
@@ -400,6 +412,16 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
400
412
|
super();
|
|
401
413
|
}
|
|
402
414
|
|
|
415
|
+
public acquire(params: InternalPFrameData): PollResource<PFrameHolder> {
|
|
416
|
+
return super.acquire(params);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
public getByKey(key: PFrameHandle): PFrameHolder {
|
|
420
|
+
const resource = super.tryGetByKey(key);
|
|
421
|
+
if (!resource) throw new PFrameDriverError(`PFrame not found, handle = ${key}`);
|
|
422
|
+
return resource;
|
|
423
|
+
}
|
|
424
|
+
|
|
403
425
|
protected createNewResource(params: InternalPFrameData): PFrameHolder {
|
|
404
426
|
if (getDebugFlags().logPFrameRequests)
|
|
405
427
|
logger.info(
|
|
@@ -409,7 +431,12 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
409
431
|
}
|
|
410
432
|
|
|
411
433
|
protected calculateParamsKey(params: InternalPFrameData): string {
|
|
412
|
-
|
|
434
|
+
try {
|
|
435
|
+
return stableKeyFromPFrameData(params);
|
|
436
|
+
} catch (err: unknown) {
|
|
437
|
+
if (isPFrameDriverError(err)) throw err;
|
|
438
|
+
throw new PFrameDriverError(`PFrame handle calculation failed, request: ${JSON.stringify(params, bigintReplacer)}, error: ${ensureError(err)}`);
|
|
439
|
+
}
|
|
413
440
|
}
|
|
414
441
|
})(this.blobDriver, this.logger, this.spillPath);
|
|
415
442
|
|
|
@@ -423,6 +450,12 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
423
450
|
super();
|
|
424
451
|
}
|
|
425
452
|
|
|
453
|
+
public getByKey(key: PTableHandle): PTableHolder {
|
|
454
|
+
const resource = super.tryGetByKey(key);
|
|
455
|
+
if (!resource) throw new PFrameDriverError(`PTable not found, handle = ${key}`);
|
|
456
|
+
return resource;
|
|
457
|
+
}
|
|
458
|
+
|
|
426
459
|
protected createNewResource(params: FullPTableDef): PTableHolder {
|
|
427
460
|
if (getDebugFlags().logPFrameRequests) {
|
|
428
461
|
logger.info(
|
|
@@ -470,7 +503,11 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
470
503
|
}
|
|
471
504
|
|
|
472
505
|
protected calculateParamsKey(params: FullPTableDef): string {
|
|
473
|
-
|
|
506
|
+
try {
|
|
507
|
+
return stableKeyFromFullPTableDef(params);
|
|
508
|
+
} catch (err: unknown) {
|
|
509
|
+
throw new PFrameDriverError(`PTable handle calculation failed, request: ${JSON.stringify(params)}, error: ${ensureError(err)}`);
|
|
510
|
+
}
|
|
474
511
|
}
|
|
475
512
|
})(this.pFrames);
|
|
476
513
|
}
|
|
@@ -769,7 +806,7 @@ function stableKeyFromPFrameData(data: PColumn<DataInfo<ResourceInfo>>[]): strin
|
|
|
769
806
|
};
|
|
770
807
|
break;
|
|
771
808
|
default:
|
|
772
|
-
throw
|
|
809
|
+
throw new PFrameDriverError(`unsupported resource type: ${JSON.stringify(type satisfies never)}`);
|
|
773
810
|
}
|
|
774
811
|
result.payload.sort((lhs, rhs) => lhs.key.localeCompare(rhs.key));
|
|
775
812
|
return result;
|
|
@@ -66,8 +66,9 @@ export abstract class RefCountResourcePool<P, R> {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
public getByKey(key: string): R {
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
const envelop = this.resources.get(key);
|
|
70
|
+
if (envelop === undefined) throw new Error(`resource not found, key = ${key}`);
|
|
71
|
+
return envelop.resource;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
public tryGetByKey(key: string): R | undefined {
|