@ibiz-template/model-helper 0.7.41-alpha.124 → 0.7.41-alpha.126
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.esm.js +152 -13
- package/dist/index.system.min.js +1 -1
- package/out/index.d.ts +2 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +1 -1
- package/out/interface/i-model-handler.d.ts +20 -0
- package/out/interface/i-model-handler.d.ts.map +1 -0
- package/out/interface/i-model-handler.js +1 -0
- package/out/interface/index.d.ts +2 -0
- package/out/interface/index.d.ts.map +1 -0
- package/out/interface/index.js +1 -0
- package/out/locale/en/index.d.ts +3 -0
- package/out/locale/en/index.d.ts.map +1 -1
- package/out/locale/en/index.js +3 -0
- package/out/locale/zh-CN/index.d.ts +3 -0
- package/out/locale/zh-CN/index.d.ts.map +1 -1
- package/out/locale/zh-CN/index.js +3 -0
- package/out/model-util.d.ts +3 -2
- package/out/model-util.d.ts.map +1 -1
- package/out/model-util.js +20 -12
- package/out/utils/index.d.ts +3 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +3 -0
- package/out/utils/model-transformer/model-handler.d.ts +32 -0
- package/out/utils/model-transformer/model-handler.d.ts.map +1 -0
- package/out/utils/model-transformer/model-handler.js +24 -0
- package/out/utils/model-transformer/model-register.d.ts +9 -0
- package/out/utils/model-transformer/model-register.d.ts.map +1 -0
- package/out/utils/model-transformer/model-register.js +10 -0
- package/out/utils/model-transformer/model-transformer.d.ts +55 -0
- package/out/utils/model-transformer/model-transformer.d.ts.map +1 -0
- package/out/utils/model-transformer/model-transformer.js +102 -0
- package/package.json +3 -3
- package/src/index.ts +6 -1
- package/src/interface/i-model-handler.ts +19 -0
- package/src/interface/index.ts +1 -0
- package/src/locale/en/index.ts +6 -0
- package/src/locale/zh-CN/index.ts +4 -0
- package/src/model-util.ts +28 -12
- package/src/utils/index.ts +3 -0
- package/src/utils/model-transformer/model-handler.ts +36 -0
- package/src/utils/model-transformer/model-register.ts +15 -0
- package/src/utils/model-transformer/model-transformer.ts +124 -0
package/out/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import '@ibiz/model-core';
|
|
2
2
|
import '@ibiz-template/runtime';
|
|
3
|
+
export type { IModelHandler } from './interface';
|
|
3
4
|
export * from './model-helper';
|
|
4
5
|
export * from './locale';
|
|
5
6
|
export { ModelHelper } from './model-helper';
|
|
6
|
-
export { MergeSubModelHelper } from './utils';
|
|
7
|
+
export { MergeSubModelHelper, registerModelHandler, ModelHandler, } from './utils';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,wBAAwB,CAAC;AAEhC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,wBAAwB,CAAC;AAEhC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAC"}
|
package/out/index.js
CHANGED
|
@@ -3,4 +3,4 @@ import '@ibiz-template/runtime';
|
|
|
3
3
|
export * from './model-helper';
|
|
4
4
|
export * from './locale';
|
|
5
5
|
export { ModelHelper } from './model-helper';
|
|
6
|
-
export { MergeSubModelHelper } from './utils';
|
|
6
|
+
export { MergeSubModelHelper, registerModelHandler, ModelHandler, } from './utils';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 模型处理器
|
|
3
|
+
* @export
|
|
4
|
+
* @interface IModelHandler
|
|
5
|
+
*/
|
|
6
|
+
export interface IModelHandler {
|
|
7
|
+
/**
|
|
8
|
+
* @description 执行模型处理
|
|
9
|
+
*
|
|
10
|
+
* 调用约定:
|
|
11
|
+
* - 入参 `model` 为当前已处理的模型对象,处理器可就地修改该对象,也可返回一个新的模型对象。
|
|
12
|
+
* - 返回值将作为下一个处理器的入参,并最终作为该路径模型的最终结果被缓存。
|
|
13
|
+
* - 若返回 `null`、`undefined` 等假值,将中断当前路径后续处理器的执行,并回退到原始模型。
|
|
14
|
+
* - 处理器抛出异常时同样会中断后续执行,并回退到原始模型。
|
|
15
|
+
* @param {IModel} model 当前待处理的模型对象
|
|
16
|
+
* @returns {IModel} 处理后的模型对象
|
|
17
|
+
*/
|
|
18
|
+
execute(model: IModel): IModel;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=i-model-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-model-handler.d.ts","sourceRoot":"","sources":["../../src/interface/i-model-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/out/locale/en/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/locale/en/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/locale/en/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;CAqBd,CAAC"}
|
package/out/locale/en/index.js
CHANGED
|
@@ -5,6 +5,9 @@ export const en = {
|
|
|
5
5
|
maximumTier: 'Service path calculation exceeds maximum tier 10',
|
|
6
6
|
circularRecursive: 'A circular recursive reference appears in the computational resource relationship path, triggering the entity:',
|
|
7
7
|
calculatedEntities: 'Current list of calculated entities. ',
|
|
8
|
+
transformNoModelData: '[{dynaModelFilePath}] model transformation exception, no model data returned',
|
|
9
|
+
transformException: '[{dynaModelFilePath}] model transformation exception',
|
|
10
|
+
tryGetModel: '[Custom extension model data] Try to get the extension model of path [{dynaModelFilePath}]',
|
|
8
11
|
},
|
|
9
12
|
noInitialized: '[{appId}] is not initialized, please call initModelUtil method to initialize it first',
|
|
10
13
|
noFoundEntity: 'Application [{appId}] data entity not found [{tag}]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/locale/zh-CN/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/locale/zh-CN/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;CAiBhB,CAAC"}
|
|
@@ -5,6 +5,9 @@ export const zhCn = {
|
|
|
5
5
|
maximumTier: '服务路径计算超过最大层级 10',
|
|
6
6
|
circularRecursive: '计算资源关系路径出现循环递归引用,触发实体:',
|
|
7
7
|
calculatedEntities: '当前已计算过实体清单: ',
|
|
8
|
+
transformNoModelData: '[{dynaModelFilePath}]模型转化异常,未返回模型数据',
|
|
9
|
+
transformException: '[{dynaModelFilePath}]模型转化异常',
|
|
10
|
+
tryGetModel: '[自定义扩展模型数据] 尝试获取路径[{dynaModelFilePath}]的扩展模型',
|
|
8
11
|
},
|
|
9
12
|
noInitialized: '[{appId}]未初始化,请先调用 initModelUtil 方法初始化',
|
|
10
13
|
noFoundEntity: '应用[{appId}]未找到数据实体[{tag}]',
|
package/out/model-util.d.ts
CHANGED
|
@@ -164,14 +164,15 @@ export declare class ModelUtil {
|
|
|
164
164
|
*/
|
|
165
165
|
getModel(modelPath: string, params?: IParams, isDynamic?: boolean): Promise<IModel>;
|
|
166
166
|
/**
|
|
167
|
-
*
|
|
167
|
+
* 递归填充模型,包括填充模型appId、变换模型
|
|
168
168
|
*
|
|
169
169
|
* @author chitanda
|
|
170
170
|
* @date 2023-08-21 10:08:41
|
|
171
171
|
* @protected
|
|
172
172
|
* @param {IModel} model
|
|
173
|
+
* @return {*} {IModel} 返回处理后的模型,若处理器返回新对象则替换原引用
|
|
173
174
|
*/
|
|
174
|
-
protected
|
|
175
|
+
protected deepFillModel(model: IModel): IModel;
|
|
175
176
|
/**
|
|
176
177
|
* 计算应用模型请求路径
|
|
177
178
|
*
|
package/out/model-util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-util.d.ts","sourceRoot":"","sources":["../src/model-util.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"model-util.d.ts","sourceRoot":"","sources":["../src/model-util.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,eAAe,EAChB,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,qBAAa,SAAS;IA0ClB,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC;IACjE,SAAS,CAAC,GAAG,EAAE,OAAO;IACtB,SAAS,CAAC,UAAU,EAAE,OAAO;IAC7B,SAAS,CAAC,UAAU,EAAE,OAAO;IA9C/B;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAEtD;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,EAAG,MAAM,CAAC;IAE5B;;;;;;OAMG;IACH,eAAe,EAAG,eAAe,CAAC;IAElC;;;;;;;;;;OAUG;gBAES,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,EACvD,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,OAAO,EACnB,UAAU,GAAE,OAAc;IAGtC;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C3B;;;;;;;OAOG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWhD;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAepC;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqB3C;;;;;;;;;OASG;IACG,qBAAqB,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,OAAc,EACpB,UAAU,GAAE,OAAe,GAC1B,OAAO,CAAC,MAAM,CAAC;IA8BlB;;;;;;;;;OASG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;;;;;OAOG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBrD;;;;;;;OAOG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjD;;;;;;;OAOG;IACG,mBAAmB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWlE;;;;;;;OAOG;IACG,gBAAgB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW/D;;;;;;;OAOG;IACG,eAAe,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW9D;;;;;;;;;OASG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC;IAmBlB;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA6B9C;;;;;;;;;OASG;IACH,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,MAAM;IAW5E;;;;;;;;;OASG;IACH,SAAS,CAAC,cAAc,CACtB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,OAAe,GACzB,MAAM;CAQV"}
|
package/out/model-util.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { calcUniqueTag } from '@ibiz/rt-model-api';
|
|
2
2
|
import { isEmpty } from 'ramda';
|
|
3
|
-
import { formatPath, mergeModel, ServicePathUtil } from './utils';
|
|
3
|
+
import { formatPath, mergeModel, ModelTransformer, ServicePathUtil, } from './utils';
|
|
4
4
|
import { PSSysApp } from './model/PSSYSAPP';
|
|
5
5
|
/**
|
|
6
6
|
* 全动模型处理工具类,每个App一个实例
|
|
@@ -331,38 +331,46 @@ export class ModelUtil {
|
|
|
331
331
|
return this.modelCache.get(url);
|
|
332
332
|
}
|
|
333
333
|
const model = await this.get(url, params);
|
|
334
|
+
const filledModel = this.deepFillModel(model);
|
|
334
335
|
if (!isParams) {
|
|
335
|
-
this.modelCache.set(url,
|
|
336
|
+
this.modelCache.set(url, filledModel);
|
|
336
337
|
}
|
|
337
|
-
|
|
338
|
-
return model;
|
|
338
|
+
return filledModel;
|
|
339
339
|
}
|
|
340
340
|
/**
|
|
341
|
-
*
|
|
341
|
+
* 递归填充模型,包括填充模型appId、变换模型
|
|
342
342
|
*
|
|
343
343
|
* @author chitanda
|
|
344
344
|
* @date 2023-08-21 10:08:41
|
|
345
345
|
* @protected
|
|
346
346
|
* @param {IModel} model
|
|
347
|
+
* @return {*} {IModel} 返回处理后的模型,若处理器返回新对象则替换原引用
|
|
347
348
|
*/
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
deepFillModel(model) {
|
|
350
|
+
// 变换模型
|
|
351
|
+
let result = model;
|
|
352
|
+
if (model.dynaModelFilePath) {
|
|
353
|
+
result = ModelTransformer.getInstance().transform(model.dynaModelFilePath, model);
|
|
354
|
+
}
|
|
355
|
+
// 填充模型appId
|
|
356
|
+
result.appId = this.appId;
|
|
357
|
+
const keys = Object.keys(result);
|
|
351
358
|
keys.forEach(key => {
|
|
352
|
-
const value =
|
|
359
|
+
const value = result[key];
|
|
353
360
|
if (value && typeof value === 'object') {
|
|
354
361
|
if (Array.isArray(value)) {
|
|
355
|
-
value.forEach(item => {
|
|
362
|
+
value.forEach((item, index) => {
|
|
356
363
|
if (item && typeof item === 'object') {
|
|
357
|
-
this.
|
|
364
|
+
value[index] = this.deepFillModel(item);
|
|
358
365
|
}
|
|
359
366
|
});
|
|
360
367
|
}
|
|
361
368
|
else {
|
|
362
|
-
this.
|
|
369
|
+
result[key] = this.deepFillModel(value);
|
|
363
370
|
}
|
|
364
371
|
}
|
|
365
372
|
});
|
|
373
|
+
return result;
|
|
366
374
|
}
|
|
367
375
|
/**
|
|
368
376
|
* 计算应用模型请求路径
|
package/out/utils/index.d.ts
CHANGED
|
@@ -3,4 +3,7 @@ export { mergeModel } from './merge-model/merge-model';
|
|
|
3
3
|
export { plural, pluralLower } from './plural/plural';
|
|
4
4
|
export { ServicePathDeep, ServicePathItem, ServicePathUtil, } from './service-path-util/service-path-util';
|
|
5
5
|
export { MergeSubModelHelper } from './merge-model/merge-model-helper';
|
|
6
|
+
export { ModelHandler } from './model-transformer/model-handler';
|
|
7
|
+
export { ModelTransformer } from './model-transformer/model-transformer';
|
|
8
|
+
export { registerModelHandler } from './model-transformer/model-register';
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
package/out/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC"}
|
package/out/utils/index.js
CHANGED
|
@@ -3,3 +3,6 @@ export { mergeModel } from './merge-model/merge-model';
|
|
|
3
3
|
export { plural, pluralLower } from './plural/plural';
|
|
4
4
|
export { ServicePathUtil, } from './service-path-util/service-path-util';
|
|
5
5
|
export { MergeSubModelHelper } from './merge-model/merge-model-helper';
|
|
6
|
+
export { ModelHandler } from './model-transformer/model-handler';
|
|
7
|
+
export { ModelTransformer } from './model-transformer/model-transformer';
|
|
8
|
+
export { registerModelHandler } from './model-transformer/model-register';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { IModelHandler } from '../../interface';
|
|
2
|
+
/**
|
|
3
|
+
* @description 模型变换处理器
|
|
4
|
+
* @export
|
|
5
|
+
* @abstract
|
|
6
|
+
* @class ModelHandler
|
|
7
|
+
* @implements {IModelHandler}
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class ModelHandler implements IModelHandler {
|
|
10
|
+
/**
|
|
11
|
+
* @description 优先级,默认值为1
|
|
12
|
+
* @public
|
|
13
|
+
* @type {number}
|
|
14
|
+
* @memberof ModelHandler
|
|
15
|
+
*/
|
|
16
|
+
priority: number;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of ModelHandler.
|
|
19
|
+
* @param {number} [priority=1] 优先级,数值越小越先执行
|
|
20
|
+
* @memberof ModelHandler
|
|
21
|
+
*/
|
|
22
|
+
constructor(priority?: number);
|
|
23
|
+
/**
|
|
24
|
+
* @description 执行器
|
|
25
|
+
* @abstract
|
|
26
|
+
* @param {IModel} model
|
|
27
|
+
* @returns {*} {IModel}
|
|
28
|
+
* @memberof ModelHandler
|
|
29
|
+
*/
|
|
30
|
+
abstract execute(model: IModel): IModel;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=model-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-handler.d.ts","sourceRoot":"","sources":["../../../src/utils/model-transformer/model-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;GAMG;AACH,8BAAsB,YAAa,YAAW,aAAa;IACzD;;;;;OAKG;IACI,QAAQ,EAAE,MAAM,CAAK;IAE5B;;;;OAIG;gBACS,QAAQ,GAAE,MAAU;IAIhC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CACxC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 模型变换处理器
|
|
3
|
+
* @export
|
|
4
|
+
* @abstract
|
|
5
|
+
* @class ModelHandler
|
|
6
|
+
* @implements {IModelHandler}
|
|
7
|
+
*/
|
|
8
|
+
export class ModelHandler {
|
|
9
|
+
/**
|
|
10
|
+
* Creates an instance of ModelHandler.
|
|
11
|
+
* @param {number} [priority=1] 优先级,数值越小越先执行
|
|
12
|
+
* @memberof ModelHandler
|
|
13
|
+
*/
|
|
14
|
+
constructor(priority = 1) {
|
|
15
|
+
/**
|
|
16
|
+
* @description 优先级,默认值为1
|
|
17
|
+
* @public
|
|
18
|
+
* @type {number}
|
|
19
|
+
* @memberof ModelHandler
|
|
20
|
+
*/
|
|
21
|
+
this.priority = 1;
|
|
22
|
+
this.priority = priority;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModelHandler } from './model-handler';
|
|
2
|
+
/**
|
|
3
|
+
* @description 注册模型处理器
|
|
4
|
+
* @export
|
|
5
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
6
|
+
* @param {ModelHandler} handler 模型处理器
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerModelHandler(dynaModelFilePath: string, handler: ModelHandler): void;
|
|
9
|
+
//# sourceMappingURL=model-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-register.d.ts","sourceRoot":"","sources":["../../../src/utils/model-transformer/model-register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,YAAY,GACpB,IAAI,CAEN"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ModelTransformer } from './model-transformer';
|
|
2
|
+
/**
|
|
3
|
+
* @description 注册模型处理器
|
|
4
|
+
* @export
|
|
5
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
6
|
+
* @param {ModelHandler} handler 模型处理器
|
|
7
|
+
*/
|
|
8
|
+
export function registerModelHandler(dynaModelFilePath, handler) {
|
|
9
|
+
ModelTransformer.getInstance().registerHandler(dynaModelFilePath, handler);
|
|
10
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ModelHandler } from './model-handler';
|
|
2
|
+
/**
|
|
3
|
+
* @description 模型变换器
|
|
4
|
+
* @author tony001
|
|
5
|
+
* @date 2026-08-13 09:08:03
|
|
6
|
+
* @export
|
|
7
|
+
* @class ModelTransformer
|
|
8
|
+
*/
|
|
9
|
+
export declare class ModelTransformer {
|
|
10
|
+
/**
|
|
11
|
+
* @description 单例变量声明
|
|
12
|
+
* @private
|
|
13
|
+
* @static
|
|
14
|
+
* @type {ModelTransformer}
|
|
15
|
+
* @memberof ModelTransformer
|
|
16
|
+
*/
|
|
17
|
+
private static modelTransformer;
|
|
18
|
+
/**
|
|
19
|
+
* @description 获取 ModelTransformer 单例对象
|
|
20
|
+
* @static
|
|
21
|
+
* @returns {*} {ModelTransformer}
|
|
22
|
+
* @memberof ModelTransformer
|
|
23
|
+
*/
|
|
24
|
+
static getInstance(): ModelTransformer;
|
|
25
|
+
/**
|
|
26
|
+
* @description 模型处理器Map
|
|
27
|
+
* @private
|
|
28
|
+
* @type {Map<string, ModelHandler[]>}
|
|
29
|
+
* @memberof ModelTransformer
|
|
30
|
+
*/
|
|
31
|
+
private handlerMap;
|
|
32
|
+
/**
|
|
33
|
+
* @description 模型缓存Map
|
|
34
|
+
* @private
|
|
35
|
+
* @type {Map<string, IModel>}
|
|
36
|
+
* @memberof ModelTransformer
|
|
37
|
+
*/
|
|
38
|
+
private modelCacheMap;
|
|
39
|
+
/**
|
|
40
|
+
* @description 注册模型处理器
|
|
41
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
42
|
+
* @param {IModelHandler} handler 执行器
|
|
43
|
+
* @memberof ModelTransformer
|
|
44
|
+
*/
|
|
45
|
+
registerHandler(dynaModelFilePath: string, handler: ModelHandler): void;
|
|
46
|
+
/**
|
|
47
|
+
* @description 变换模型
|
|
48
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
49
|
+
* @param {IModel} model 原始模型
|
|
50
|
+
* @returns {*} {IModel}
|
|
51
|
+
* @memberof ModelTransformer
|
|
52
|
+
*/
|
|
53
|
+
transform(dynaModelFilePath: string, model: IModel): IModel;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=model-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-transformer.d.ts","sourceRoot":"","sources":["../../../src/utils/model-transformer/model-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAmB;IAElD;;;;;OAKG;WACW,WAAW,IAAI,gBAAgB;IAO7C;;;;;OAKG;IACH,OAAO,CAAC,UAAU,CAA0C;IAE5D;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAkC;IAEvD;;;;;OAKG;IACI,eAAe,CACpB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,YAAY,GACpB,IAAI;IAWP;;;;;;OAMG;IACI,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAgDnE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 模型变换器
|
|
3
|
+
* @author tony001
|
|
4
|
+
* @date 2026-08-13 09:08:03
|
|
5
|
+
* @export
|
|
6
|
+
* @class ModelTransformer
|
|
7
|
+
*/
|
|
8
|
+
export class ModelTransformer {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* @description 模型处理器Map
|
|
12
|
+
* @private
|
|
13
|
+
* @type {Map<string, ModelHandler[]>}
|
|
14
|
+
* @memberof ModelTransformer
|
|
15
|
+
*/
|
|
16
|
+
this.handlerMap = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* @description 模型缓存Map
|
|
19
|
+
* @private
|
|
20
|
+
* @type {Map<string, IModel>}
|
|
21
|
+
* @memberof ModelTransformer
|
|
22
|
+
*/
|
|
23
|
+
this.modelCacheMap = new Map();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description 获取 ModelTransformer 单例对象
|
|
27
|
+
* @static
|
|
28
|
+
* @returns {*} {ModelTransformer}
|
|
29
|
+
* @memberof ModelTransformer
|
|
30
|
+
*/
|
|
31
|
+
static getInstance() {
|
|
32
|
+
if (!this.modelTransformer) {
|
|
33
|
+
this.modelTransformer = new ModelTransformer();
|
|
34
|
+
}
|
|
35
|
+
return this.modelTransformer;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @description 注册模型处理器
|
|
39
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
40
|
+
* @param {IModelHandler} handler 执行器
|
|
41
|
+
* @memberof ModelTransformer
|
|
42
|
+
*/
|
|
43
|
+
registerHandler(dynaModelFilePath, handler) {
|
|
44
|
+
const handlers = this.handlerMap.get(dynaModelFilePath);
|
|
45
|
+
if (handlers) {
|
|
46
|
+
handlers.push(handler);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.handlerMap.set(dynaModelFilePath, [handler]);
|
|
50
|
+
}
|
|
51
|
+
// 注册新处理器后清除该路径的模型缓存,确保新处理器能生效
|
|
52
|
+
this.modelCacheMap.delete(dynaModelFilePath);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @description 变换模型
|
|
56
|
+
* @param {string} dynaModelFilePath 模型路径
|
|
57
|
+
* @param {IModel} model 原始模型
|
|
58
|
+
* @returns {*} {IModel}
|
|
59
|
+
* @memberof ModelTransformer
|
|
60
|
+
*/
|
|
61
|
+
transform(dynaModelFilePath, model) {
|
|
62
|
+
ibiz.log.debug(ibiz.i18n.t('modelHelper.utils.tryGetModel', {
|
|
63
|
+
dynaModelFilePath,
|
|
64
|
+
}));
|
|
65
|
+
if (this.modelCacheMap.has(dynaModelFilePath)) {
|
|
66
|
+
return this.modelCacheMap.get(dynaModelFilePath);
|
|
67
|
+
}
|
|
68
|
+
const handlers = this.handlerMap.get(dynaModelFilePath);
|
|
69
|
+
if (!handlers || handlers.length === 0) {
|
|
70
|
+
this.modelCacheMap.set(dynaModelFilePath, model);
|
|
71
|
+
return model;
|
|
72
|
+
}
|
|
73
|
+
// 按照优先级升序排序,优先级高的后执行
|
|
74
|
+
const sortedHandlers = [...handlers].sort((a, b) => a.priority - b.priority);
|
|
75
|
+
// 模型处理
|
|
76
|
+
let result = model;
|
|
77
|
+
for (const handler of sortedHandlers) {
|
|
78
|
+
try {
|
|
79
|
+
const next = handler.execute(result);
|
|
80
|
+
if (next) {
|
|
81
|
+
result = next;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
ibiz.log.error(ibiz.i18n.t('modelHelper.utils.transformNoModelData', {
|
|
85
|
+
dynaModelFilePath,
|
|
86
|
+
}));
|
|
87
|
+
// 未返回模型数据时返回传入的原始模型,防止界面异常
|
|
88
|
+
return model;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
ibiz.log.error(ibiz.i18n.t('modelHelper.utils.transformException', {
|
|
93
|
+
dynaModelFilePath,
|
|
94
|
+
}), error);
|
|
95
|
+
// 执行异常时返回传入的原始模型,防止界面异常
|
|
96
|
+
return model;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.modelCacheMap.set(dynaModelFilePath, result);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/model-helper",
|
|
3
|
-
"version": "0.7.41-alpha.
|
|
3
|
+
"version": "0.7.41-alpha.126",
|
|
4
4
|
"description": "模型辅助库",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"types": "out/index.d.ts",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"ramda": "^0.29.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@ibiz-template/runtime": "^0.7.41-alpha.
|
|
41
|
+
"@ibiz-template/runtime": "^0.7.41-alpha.126",
|
|
42
42
|
"@types/pluralize": "^0.0.33",
|
|
43
43
|
"@types/ramda": "^0.29.10"
|
|
44
44
|
},
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@ibiz-template/runtime": "^0.6.0",
|
|
47
47
|
"ramda": "^0.29.0"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "1dc811502125ae2ca520bc1ad303a1a8d5b63b66"
|
|
50
50
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import '@ibiz/model-core';
|
|
2
2
|
import '@ibiz-template/runtime';
|
|
3
3
|
|
|
4
|
+
export type { IModelHandler } from './interface';
|
|
4
5
|
export * from './model-helper';
|
|
5
6
|
export * from './locale';
|
|
6
7
|
export { ModelHelper } from './model-helper';
|
|
7
|
-
export {
|
|
8
|
+
export {
|
|
9
|
+
MergeSubModelHelper,
|
|
10
|
+
registerModelHandler,
|
|
11
|
+
ModelHandler,
|
|
12
|
+
} from './utils';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 模型处理器
|
|
3
|
+
* @export
|
|
4
|
+
* @interface IModelHandler
|
|
5
|
+
*/
|
|
6
|
+
export interface IModelHandler {
|
|
7
|
+
/**
|
|
8
|
+
* @description 执行模型处理
|
|
9
|
+
*
|
|
10
|
+
* 调用约定:
|
|
11
|
+
* - 入参 `model` 为当前已处理的模型对象,处理器可就地修改该对象,也可返回一个新的模型对象。
|
|
12
|
+
* - 返回值将作为下一个处理器的入参,并最终作为该路径模型的最终结果被缓存。
|
|
13
|
+
* - 若返回 `null`、`undefined` 等假值,将中断当前路径后续处理器的执行,并回退到原始模型。
|
|
14
|
+
* - 处理器抛出异常时同样会中断后续执行,并回退到原始模型。
|
|
15
|
+
* @param {IModel} model 当前待处理的模型对象
|
|
16
|
+
* @returns {IModel} 处理后的模型对象
|
|
17
|
+
*/
|
|
18
|
+
execute(model: IModel): IModel;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { IModelHandler } from './i-model-handler';
|
package/src/locale/en/index.ts
CHANGED
|
@@ -6,6 +6,12 @@ export const en = {
|
|
|
6
6
|
circularRecursive:
|
|
7
7
|
'A circular recursive reference appears in the computational resource relationship path, triggering the entity:',
|
|
8
8
|
calculatedEntities: 'Current list of calculated entities. ',
|
|
9
|
+
transformNoModelData:
|
|
10
|
+
'[{dynaModelFilePath}] model transformation exception, no model data returned',
|
|
11
|
+
transformException:
|
|
12
|
+
'[{dynaModelFilePath}] model transformation exception',
|
|
13
|
+
tryGetModel:
|
|
14
|
+
'[Custom extension model data] Try to get the extension model of path [{dynaModelFilePath}]',
|
|
9
15
|
},
|
|
10
16
|
noInitialized:
|
|
11
17
|
'[{appId}] is not initialized, please call initModelUtil method to initialize it first',
|
|
@@ -5,6 +5,10 @@ export const zhCn = {
|
|
|
5
5
|
maximumTier: '服务路径计算超过最大层级 10',
|
|
6
6
|
circularRecursive: '计算资源关系路径出现循环递归引用,触发实体:',
|
|
7
7
|
calculatedEntities: '当前已计算过实体清单: ',
|
|
8
|
+
transformNoModelData: '[{dynaModelFilePath}]模型转化异常,未返回模型数据',
|
|
9
|
+
transformException: '[{dynaModelFilePath}]模型转化异常',
|
|
10
|
+
tryGetModel:
|
|
11
|
+
'[自定义扩展模型数据] 尝试获取路径[{dynaModelFilePath}]的扩展模型',
|
|
8
12
|
},
|
|
9
13
|
noInitialized: '[{appId}]未初始化,请先调用 initModelUtil 方法初始化',
|
|
10
14
|
noFoundEntity: '应用[{appId}]未找到数据实体[{tag}]',
|